mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-10-11 03:40:05 +00:00
Petri now ends a run's lifetime at its first failed store write: it records nothing after it, fails no firing for it, and returns CoordinatorError::StoreFailed. The run is not over; the next lifetime resumes it from what the store holds. Fabro read that error as an unfinished run and failed it. - engine: RunError::StoreFailed, returned without reading the record back, and Conclusion::Interrupted for it. - worker: an interrupted run gets no terminal lifecycle record; the worker exits with EX_TEMPFAIL (75, the new ExitClass::Interrupted). - server: WorkerExit carries the exit code. An interrupted worker's run goes back to the scheduler in resume mode through the relaunch a restart takes (lease release, recovery, start_requested + runnable), now shared with reconcile_on_startup. The in-process path does the same. A run is resumed at most MAX_STORE_INTERRUPTIONS (3) times per server; the next interruption fails it. A pending cancel, a run that ended or was deleted, and a shutdown also end it as before. Tests: an engine run over a store whose first lease write fails is interrupted with no finish, and a resume finishes it; the server relaunches an interrupted worker in resume mode, fails the run after the bound, and fails a worker that exits 1 as before; exit code 75. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src | ||
| tests | ||
| build.rs | ||
| Cargo.toml | ||