Expand description
The reason taxonomy and the typed WorkerUnavailable dispatch failure.
The queue-service taxonomy and its typed dispatch failure.
Every reason in QueueServiceReason is emitted by a real path at the
bridge seam — six from the selection census ([super::census::classify])
and QueueServiceReason::Saturated from the delivery-backpressure path
([super::delivery]). A variant that could not fire would be a name that
does not mean what it says.
R1 defined four of these. QueueServiceReason::PollersUnreachable is the
fifth: a pool whose workers all serve the activity but have all lost
dispatch eligibility used to classify as served — because the census counts
compatible workers without an eligibility filter — and so parked with
nothing published about why.
QueueServiceReason::PollersAtCapacity is the sixth, and the only one
that describes a fleet with nothing wrong with it: every compatible worker
is connected, serving the activity, and already running as many activities
as it advertised it would. It exists because the alternative was to report a
busy pool with one of the five sentences above, all of which are false about
it — and one of which advises the opposite of what would actually help.
QueueServiceReason::PollersCapacityUnannounced is the seventh, and it
exists for the same reason the sixth does: a state that is real, that no
existing sentence is true of, and that would otherwise be reported as a
busy pool. A liminal worker cannot state its capacity in its registration
frame — liminal::protocol::WorkerRegistration is a published wire type
with no such field — so it registers with capacity UNKNOWN and announces the
number a frame later. Selection treats unknown as full, which is the safe
direction and the wrong WORD: a pool of workers that have not yet said what
they can take is not a pool of workers that are busy, and the two have
opposite remedies. Waiting fixes the busy one; only the worker announcing
(or being replaced) fixes this one, and starting another worker of the same
build fixes nothing at all.
Structs§
- Service
Address - The pool address a dispatch could not be served at.
- Unavailable
Summary - The typed head of a queue-service refusal, recovered from its string form.
- Worker
Unavailable - A typed dispatch refusal: the taxonomy reason, which clock expired (if any), how long the dispatch waited, and the live poller census behind the verdict. Never a generic timeout, never a bare string.
Enums§
- Expired
Clock - Which of the two never-conflated service clocks expired.
- Queue
Service Reason - Why a
(namespace, task_queue, activity_type)address is not being served.