pub struct ScanReport {
pub buckets_scanned: usize,
pub objects_evaluated: usize,
pub expired: usize,
pub transitioned: usize,
pub skipped_locked: usize,
pub aborted_multipart: usize,
pub action_errors: usize,
}Expand description
Per-invocation scanner counters returned by run_scan_once. Useful
for tests, the --lifecycle-scan-interval-hours log line, and any
future /admin/lifecycle/scan introspection endpoint. Operators see
the same numbers via Prometheus
(s4_lifecycle_actions_total{action="expire"|"transition"}).
Fields§
§buckets_scanned: usizeNumber of buckets the scanner walked (= buckets with a lifecycle configuration attached at the moment the scanner ran).
objects_evaluated: usizeNumber of distinct keys the scanner evaluated. Multi-page lists count one key once even if the listing was paginated.
expired: usizeNumber of objects deleted as a result of an Expiration action.
transitioned: usizeNumber of objects whose x-amz-storage-class was rewritten as a
result of a Transition action.
skipped_locked: usizeNumber of objects skipped because an Object Lock (Compliance, Governance, or legal hold) was in effect. The Lock always wins over Lifecycle, matching AWS S3 semantics.
aborted_multipart: usizev0.8.3 #69 (audit M-2): number of in-flight multipart uploads
the scanner aborted as a result of an
AbortIncompleteMultipartUpload action. Pair with the
Prometheus counter
s4_lifecycle_actions_total{action="abort_incomplete_multipart"}.
Only counts successful aborts — a backend
abort_multipart_upload failure bumps action_errors instead
(matching the existing Expire / Transition error-path).
action_errors: usizeNumber of objects the evaluator wanted to act on but the action
failed (e.g. backend delete_object returned an error). Logged
individually at WARN level; this counter exists so tests / metrics
can assert no silent loss.
Trait Implementations§
Source§impl Clone for ScanReport
impl Clone for ScanReport
Source§fn clone(&self) -> ScanReport
fn clone(&self) -> ScanReport
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 ScanReport
impl Debug for ScanReport
Source§impl Default for ScanReport
impl Default for ScanReport
Source§fn default() -> ScanReport
fn default() -> ScanReport
Source§impl PartialEq for ScanReport
impl PartialEq for ScanReport
Source§fn eq(&self, other: &ScanReport) -> bool
fn eq(&self, other: &ScanReport) -> bool
self and other values to be equal, and is used by ==.impl Copy for ScanReport
impl Eq for ScanReport
impl StructuralPartialEq for ScanReport
Auto Trait Implementations§
impl Freeze for ScanReport
impl RefUnwindSafe for ScanReport
impl Send for ScanReport
impl Sync for ScanReport
impl Unpin for ScanReport
impl UnsafeUnpin for ScanReport
impl UnwindSafe for ScanReport
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.