JobCoordinator

Struct JobCoordinator 

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

Orchestrates chunk execution with retries and idempotent output capture.

The coordinator iterates over work chunks, executes each via a caller-provided function, stores outputs in a JobOutputStore, and retries transient failures according to RetryPolicy. Once all chunks are processed, the caller-provided reducer aggregates the outputs.

Chunks whose output already exists in the store are skipped (idempotent replay). This enables safe restart after partial failure.

Implementations§

Source§

impl JobCoordinator

Source

pub fn new(policy: RetryPolicy) -> Self

Create a new coordinator with the given retry policy.

Source

pub fn run<F, R>( &mut self, chunks: &[Box<dyn WorkChunk>], store: &mut dyn JobOutputStore, execute_fn: F, reduce_fn: R, ) -> Result<JobResult, FabricError>
where F: FnMut(&[u8]) -> Result<Vec<u8>, FabricError>, R: FnOnce(&[(ChunkId, Vec<u8>)]) -> Vec<u8>,

Execute a job over the given chunks.

§Parameters
  • chunks: Work units to process.
  • store: Output store for idempotent capture.
  • execute_fn: Called with serialized chunk bytes; returns output bytes on success.
  • reduce_fn: Called with all (ChunkId, output_bytes) pairs to produce the final aggregate.
§Errors

Returns FabricError only on store failures. Chunk-level failures are captured in JobResult::chunk_results; the job itself succeeds as long as the store is functional.

Source

pub fn teardown(&self, store: &mut dyn JobOutputStore)

Teardown: clear the output store.

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