Skip to main content

MaintenanceReport

Struct MaintenanceReport 

Source
pub struct MaintenanceReport {
    pub time_spent: Duration,
    pub completed_merges: Vec<PathBuf>,
    pub rows_merged: u64,
    pub bytes_written: u64,
    pub pending_compaction: bool,
    pub dropped_whole: Vec<PathBuf>,
    pub direct_stream_partitions: u64,
    pub pre_pass_time: Duration,
    pub pre_pass_short_circuited: bool,
}
Expand description

Maintenance report from a maintenance_step() call (M5.2, Issue #384)

Fields§

§time_spent: Duration

Time spent in this maintenance step

§completed_merges: Vec<PathBuf>

Completed merge output files (if any merge completed)

§rows_merged: u64

Number of rows merged in this step

§bytes_written: u64

Number of bytes written in this step

§pending_compaction: bool

Whether there is pending compaction work

§dropped_whole: Vec<PathBuf>

SSTables DROPPED WHOLE by the fully-expired fast path in the merge that completed this step (issue #1388), distinct from the merged inputs: each was proven fully expired by authoritative Statistics.db metadata and overlap-safe, so it was excluded from the K-way merger (never read/decoded) and its components were reclaimed after the merged output published. Empty when nothing was dropped. Paths are input Data.db paths.

§direct_stream_partitions: u64

Number of partitions written via the issue #2299 direct-stream path (rows fed straight into the writer session with no whole-partition buffer). Taken only when authoritative Statistics.db proves no input carries a deletion. Exposed so tests can positively assert the memory-bounding path actually executed (byte-identity alone holds on both the direct and buffered paths, so it cannot distinguish them) — roborev job 1723. 0 when every partition used the buffered path.

§pre_pass_time: Duration

Wall-clock time spent in the dropped-column survivor pre-pass during THIS step (issue #1667, budget honesty). Non-zero only on the step that STARTS a merge for a table with dropped columns — the pre-pass (compute_surviving_dropped_columns) is a FULL, one-shot merge scan over every input that runs before any partition is emitted and is NOT bounded by budget (making it incremental is deferred to Q5). It is nonetheless counted inside time_spent (the budget Instant starts before start_merge), and when the pre-pass alone exhausts the budget the partition loop is short-circuited for this step so the pre-pass cannot silently precede an unbudgeted partition loop. Duration::ZERO on every step that does not run the pre-pass (no dropped columns, or a step that resumes an already-started merge). Always <= time_spent.

§pre_pass_short_circuited: bool

true when this step OPENED a fresh merge whose dropped-column survivor pre-pass (pre_pass_time) ALONE met or exceeded the budget, so the partition loop was SKIPPED for this step and the merge left pending (issue #1667). This makes the budget-honesty guarantee observable: an over-budget pre-pass can never silently precede a partition pass in the same step. false on every step that ran (or resumed) the partition loop, on a table with no dropped columns (no pre-pass runs, so #1668’s mid-partition pause still governs a tiny-budget first step), and on a freshly-started merge whose pre-pass fit inside the budget.

Trait Implementations§

Source§

impl Clone for MaintenanceReport

Source§

fn clone(&self) -> MaintenanceReport

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MaintenanceReport

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more