Skip to main content

Module wait

Module wait 

Source
Expand description

The classification-driven selection wait. The selection wait, made honest.

Before R1 this loop was: registry miss, one tracing::info!, block. It could not tell “served slowly” from “served by nobody”, so an operator had nothing to alert on and a run could sit forever with no state.

Now every miss is classified against the deployed contract records and the live poller census, published to the queue-service state, logged at WARN with the reason and the last-compatible-poller age, and resolved by the policy: structural unservability refuses at once, a fleet condition refuses when the service-availability deadline expires, and durable_pending parks visibly until a worker arrives.

What did NOT change: the drain gate still runs first and still wins, and a server with no configured deadline still waits — loudly, and with a state an operator can read.

That wait is unbounded only while the server is accepting work. The drain gate here is consulted once per iteration, so it can only refuse a dispatch that is between waits; releasing one that is already inside a wait is the caller’s park contract below, and the caller owes it (#72).

Structs§

ObservedMiss
What one classified selection miss turned out to be.
ServiceWait
Everything the wait needs that outlives one iteration.

Enums§

SelectionRefusal
Why selection ended without a worker.

Functions§

clear_selection_miss
Clear one dispatch’s unserved entry once it is served or refused.
observe_selection_miss
Classify one selection miss, publish it to the queryable unserved state, and state it in the log.
select_worker_or_refuse
Select a worker for the address, or refuse with a typed reason.