Very interesting. I spent a large part of my career in aerospace and never considered this failure mode before. It makes me wonder: how long is the pathological code allocation time? A few seconds, at most? We're talking about flight identification codes that are normally assigned upon takeoff and change at most a handful of times during a flight.
I assume the "manual request" is an aircraft squawking 7700 or similar, but why does the system need to interrupt an in-flight allocation in the first place? Any controllers here have insight?
One would think it would be sufficient to do something single threaded like
if(!highPriorityQueue.empty() {
highPriortyQueue.processOne();
} else if(!lowPriorityQueue.empty()) {
lowPriorityQueue.processOne();
}
or whatever, but they're not and I'm curious why.