Skip to main content

RunPurger

Struct RunPurger 

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

Periodic task that purges terminal runs exceeding the retention policy.

§Examples

use std::sync::Arc;
use std::time::Duration;
use ironflow_api::purger::RunPurger;
use ironflow_store::entities::PurgePolicy;
use ironflow_store::memory::InMemoryStore;
use ironflow_store::store::Store;
use tokio_util::sync::CancellationToken;

let store: Arc<dyn Store> = Arc::new(InMemoryStore::new());
let policy = PurgePolicy {
    max_age_days: 90,
    max_runs_per_workflow: 1000,
    dry_run: false,
};

let purger = RunPurger::new(store, policy)
    .interval(Duration::from_secs(3600));
tokio::spawn(purger.run(CancellationToken::new()));

Implementations§

Source§

impl RunPurger

Source

pub fn new(store: Arc<dyn Store>, policy: PurgePolicy) -> Self

Create a purger with the default interval and batch size.

Source

pub fn with_blob_store(self, blob_store: Option<Arc<dyn BlobStore>>) -> Self

Set the blob store for artifact deletion.

When None, artifact metadata is still removed but no blobs are deleted (they either do not exist or become orphans).

Source

pub fn interval(self, interval: Duration) -> Self

Set how often the purger runs.

Source

pub fn batch_size(self, batch_size: u32) -> Self

Set how many runs a single tick processes.

Source

pub async fn run(self, shutdown: CancellationToken)

Run the purge loop until shutdown is cancelled.

Source

pub async fn tick(&self)

Purge one batch of eligible runs.

Exposed for tests and for callers that drive the schedule themselves.

Auto Trait Implementations§

Blanket Implementations§

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<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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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 = !

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