pub struct WorkloadRecovery {
pub workload: String,
pub node: String,
pub subjects: BTreeMap<String, RecoveryRecord>,
pub as_of: DateTime<Utc>,
}Expand description
Every measured subject for one workload, plus the clock reading that dates them.
as_of is captured at replay so that age_days is a pure
function of already-read data: topology::analyze must not read a clock any
more than it may read a file.
Fields§
§workload: String§node: StringThe node the most recent measurement was taken on. Measurements taken on different machines are all kept; this names the latest, because a restore time is a property of a host as much as of a database.
subjects: BTreeMap<String, RecoveryRecord>Last record per subject, ordered by subject name.
as_of: DateTime<Utc>Wall clock at replay time.
Implementations§
Source§impl WorkloadRecovery
impl WorkloadRecovery
Sourcepub fn seconds(&self) -> f64
pub fn seconds(&self) -> f64
Total measured wall-clock seconds: the workload’s restore is all of its subjects, and the helper measures them one at a time.
Sourcepub fn measured_at(&self) -> DateTime<Utc>
pub fn measured_at(&self) -> DateTime<Utc>
When the summed figure was measured — the oldest component, because a sum is only as fresh as its stalest part.
Sourcepub fn age_days(&self) -> i64
pub fn age_days(&self) -> i64
Whole days between measured_at and as_of,
floored at zero (a clock that went backwards is not negative age).
Sourcepub fn is_stale(&self) -> bool
pub fn is_stale(&self) -> bool
Whether the headline must say the figure may no longer describe the declared state.
Sourcepub fn subject_count(&self) -> usize
pub fn subject_count(&self) -> usize
How many subjects the summed figure covers.
Trait Implementations§
Source§impl Clone for WorkloadRecovery
impl Clone for WorkloadRecovery
Source§fn clone(&self) -> WorkloadRecovery
fn clone(&self) -> WorkloadRecovery
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for WorkloadRecovery
impl Debug for WorkloadRecovery
Source§impl PartialEq for WorkloadRecovery
impl PartialEq for WorkloadRecovery
impl StructuralPartialEq for WorkloadRecovery
Auto Trait Implementations§
impl Freeze for WorkloadRecovery
impl RefUnwindSafe for WorkloadRecovery
impl Send for WorkloadRecovery
impl Sync for WorkloadRecovery
impl Unpin for WorkloadRecovery
impl UnsafeUnpin for WorkloadRecovery
impl UnwindSafe for WorkloadRecovery
Blanket Implementations§
impl<T> Allocation for T
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> Fruit for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more