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
impl JobCoordinator
Sourcepub fn new(policy: RetryPolicy) -> Self
pub fn new(policy: RetryPolicy) -> Self
Create a new coordinator with the given retry policy.
Sourcepub fn run<F, R>(
&mut self,
chunks: &[Box<dyn WorkChunk>],
store: &mut dyn JobOutputStore,
execute_fn: F,
reduce_fn: R,
) -> Result<JobResult, FabricError>
pub fn run<F, R>( &mut self, chunks: &[Box<dyn WorkChunk>], store: &mut dyn JobOutputStore, execute_fn: F, reduce_fn: R, ) -> Result<JobResult, FabricError>
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.
Sourcepub fn teardown(&self, store: &mut dyn JobOutputStore)
pub fn teardown(&self, store: &mut dyn JobOutputStore)
Teardown: clear the output store.