Skip to main content

BatchStatusWriter

Struct BatchStatusWriter 

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

Accumulates task status changes and flushes them in bulk.

Updates are keyed by (workflow_id, task_id). If a task transitions multiple times before a flush (e.g., Pending → Running → Completed), only the most-recent state is retained — this de-duplicates writes for tasks that complete faster than the flush interval.

Implementations§

Source§

impl BatchStatusWriter

Source

pub fn new(max_batch_size: usize) -> Self

Create a new writer with the given max_batch_size.

Source

pub fn record( &mut self, workflow_id: impl Into<String>, task_id: impl Into<String>, state: TaskState, error: Option<String>, )

Record a task status change.

If the batch is full after accepting this update, the caller should call Self::flush before continuing (check Self::needs_flush).

Source

pub fn needs_flush(&self) -> bool

Return true if the batch should be flushed (batch is full or overflowing).

Source

pub fn pending_count(&self) -> usize

Return the number of pending updates.

Source

pub fn flush<E, F>(&mut self, sink: F) -> Result<FlushResult, E>
where F: FnOnce(Vec<StatusUpdate>) -> Result<(), E>,

Flush all pending updates.

The provided sink callback receives the sorted batch of updates. After calling sink the internal buffer is cleared regardless of whether sink succeeds.

§Errors

Returns any error propagated from sink.

Source

pub fn flush_to_vec(&mut self) -> Vec<StatusUpdate>

Flush into a Vec<StatusUpdate> and return it (useful for testing).

Source

pub fn total_accepted(&self) -> u64

Total number of updates ever accepted.

Source

pub fn total_flushes(&self) -> u64

Total number of flush operations.

Source

pub fn set_max_batch_size(&mut self, max: usize)

Change the maximum batch size.

Source

pub fn max_batch_size(&self) -> usize

Maximum batch size.

Trait Implementations§

Source§

impl Debug for BatchStatusWriter

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> 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<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

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> 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