Skip to main content

ObjectLifecycleManager

Struct ObjectLifecycleManager 

Source
pub struct ObjectLifecycleManager { /* private fields */ }
Expand description

Policy-driven object lifecycle manager.

Objects are registered and then evaluated against a set of OlmRetentionRules every time apply_rules is called. The manager updates object states internally and returns the list of actions that must be executed by the caller (e.g., actually moving bytes between tiers or removing data).

Implementations§

Source§

impl ObjectLifecycleManager

Source

pub fn new(default_ttl_ms: Option<u64>) -> Self

Create a new manager with an optional default TTL (milliseconds).

When default_ttl_ms is Some(n), objects that match no rule and are older than n ms are deleted automatically.

Source

pub fn add_rule(&mut self, rule: OlmRetentionRule)

Append a rule. Rules are evaluated in priority-descending order; equal-priority rules are evaluated in insertion order (earlier first).

Source

pub fn register_object( &mut self, object: ManagedObject, ) -> Result<(), LifecycleError>

Register a new object. Returns LifecycleError::ObjectAlreadyExists if an object with the same ID already exists.

Source

pub fn unregister_object( &mut self, object_id: &str, ) -> Result<ManagedObject, LifecycleError>

Remove and return a registered object.

Source

pub fn access_object( &mut self, object_id: &str, now: u64, ) -> Result<(), LifecycleError>

Update last_accessed to now.

Returns LifecycleError::InvalidState when the object is in Deleted state (deleted objects cannot be accessed).

Source

pub fn apply_rules(&mut self, now: u64) -> Vec<OlmLifecycleAction>

Evaluate all active objects against registered rules and the default TTL.

Returns a list of actions. The manager also updates object states internally, so callers do not need to call execute_action to keep the manager consistent — but they should use the returned actions to perform the actual data movement / deletion.

Source

pub fn execute_action( &mut self, action: &OlmLifecycleAction, _now: u64, ) -> Result<(), LifecycleError>

Apply the state change for a single action.

This is idempotent for re-applying the same action and can be called after the fact if needed. Returns an error if the referenced object does not exist.

Source

pub fn objects_in_state(&self, state_name: &str) -> Vec<&ManagedObject>

Return all objects whose state name matches state_name.

Valid names: "Active", "Expiring", "Archived", "MarkedForDeletion", "Deleted".

Source

pub fn objects_expiring_before(&self, timestamp: u64) -> Vec<&ManagedObject>

Return all objects in Expiring state whose expires_attimestamp.

Source

pub fn objects_by_tier(&self, tier: &str) -> Vec<&ManagedObject>

Return all objects on tier, sorted by created_at ascending.

Source

pub fn purge_deleted(&mut self, now: u64) -> usize

Remove logically deleted objects that were created more than 1 hour ago.

Returns the number of objects removed.

Source

pub fn total_active_bytes(&self) -> u64

Sum of size_bytes for all Active and Expiring objects.

Source

pub fn stats(&self) -> OlmLifecycleStats

Aggregate statistics snapshot.

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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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