pub enum DeadlineOutcome {
Reply(Message),
SendFailed,
QueueFull,
Timeout,
}Expand description
Outcome of ServiceContext::request_with_reply_deadline_outcome, which distinguishes the two
ways a deadline request fails - so a caller can self-heal a restarted peer without penalising a
silent one. SendFailed: the send never left (the peer’s cap is stale or its name is currently
unresolvable - it was killed and respawned, generation bumped), so reacquiring it by name and
retrying will reach the fresh instance. Timeout: the peer received the request but did not reply
within the deadline (a genuinely silent/absent host) - retrying only doubles the wait.
request_with_reply_deadline collapses both to None; use this when the difference matters.
Variants§
Reply(Message)
SendFailed
QueueFull
The peer is ALIVE and its queue is FULL. A different failure entirely, and it was folded into
SendFailed until x86 showed the cost: net-stack answered a full queue by reacquiring a
capability that was never stale, retried once and gave up - “5 of 6 REQUESTs never left the
host”, DHCP backing off for 34 seconds on a link that was up the whole time.
Congestion is transient by definition. The answer is to pace and retry, not to go looking for a peer that never went anywhere.