pub struct QuiesceTimeout {
pub remaining_cross_queue: u64,
pub remaining_outstanding_refs: u64,
pub elapsed: Duration,
}Expand description
Returned by Runtime::shutdown_quiesce when the timeout elapses
before the executor reaches a quiesced state.
The diagnostic fields help identify which producer didn’t release its refs:
remaining_cross_queue: number of cross-thread queue entries still pending at the moment of timeout. Non-zero indicates a producer thread is still pushing wakes faster than quiesce can drain them, OR a final-drain wake landed after the last drain pass — investigate which off-thread producer is still active.remaining_outstanding_refs: number of tasks still inExecutor::all_tasksat the moment of timeout. Each represents a task with outstanding cross-thread refs (or a held JoinHandle).elapsed: how long quiesce ran before timing out.
PR 2 §2.4 open-item 5 noted that finer-grained diagnostics
(“which task ID had the outstanding ref”) could be added if
implementation revealed them as cheap to surface. The implementation
uses Executor::task_count() which doesn’t enumerate tasks; adding
per-task data here would require new accessors. Out of scope for
initial PR 2; future enhancement.
Fields§
§remaining_cross_queue: u64Number of cross-thread queue entries still pending at timeout. Non-zero means a producer is racing the drain loop.
remaining_outstanding_refs: u64Number of tasks still alive at the moment of timeout. Each is a candidate for “producer hasn’t released its refs.”
elapsed: DurationTime elapsed inside shutdown_quiesce before returning timeout.
Approximately equal to the input timeout.
Trait Implementations§
Source§impl Debug for QuiesceTimeout
impl Debug for QuiesceTimeout
Source§impl Display for QuiesceTimeout
impl Display for QuiesceTimeout
Source§impl Error for QuiesceTimeout
impl Error for QuiesceTimeout
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()