pub struct ShutdownReport {
pub outcome: ShutdownOutcome,
pub drain_timeout: Duration,
pub delivered_drain_requests: usize,
pub parked: Vec<LostWorkerReport>,
pub parked_declared: Vec<AttemptKey>,
pub managed_workers_stopped: Vec<String>,
pub managed_workers_unstopped: Vec<String>,
}Expand description
Everything one graceful shutdown observed, for the outcome record the
dying server writes into the death note (crate::control::outcome).
The process exit code still collapses this to the #207 contract via
ShutdownOutcome::exit_code; the report is how the rest crosses the
process boundary.
Fields§
§outcome: ShutdownOutcomeThe drain’s face.
drain_timeout: DurationThe window that governed the wait.
delivered_drain_requests: usizeHow many connected workers received the drain request.
parked: Vec<LostWorkerReport>Parked in-flight work at drain timeout, by worker. Empty on a clean drain and on a forced exit (a second signal skips the accounting).
parked_declared: Vec<AttemptKey>Declared-body commands still executing when the drain ended (timeout or forced exit). A declared body is in-flight work no worker holds and no heartbeat tracks; these attempts are parked by silence exactly like the worker dispatches above — nothing is recorded, the engine teardown ends their process groups with the server, and post-restart replay re-dispatches each one. Empty on a clean drain: the drain gate waits for this census too.
managed_workers_stopped: Vec<String>Managed workers proven stopped, by deployment name.
managed_workers_unstopped: Vec<String>Managed workers that could not be proven stopped, each rendered with the observation that contradicted the stop.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ShutdownReport
impl RefUnwindSafe for ShutdownReport
impl Send for ShutdownReport
impl Sync for ShutdownReport
impl Unpin for ShutdownReport
impl UnsafeUnpin for ShutdownReport
impl UnwindSafe for ShutdownReport
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoMaybeUndefined<T> for T
impl<T> IntoMaybeUndefined<T> for T
Source§fn into_maybe_undefined(self) -> MaybeUndefined<T>
fn into_maybe_undefined(self) -> MaybeUndefined<T>
Source§impl<T> IntoOption<T> for T
impl<T> IntoOption<T> for T
Source§fn into_option(self) -> Option<T>
fn into_option(self) -> Option<T>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request