Skip to content

Release v1.5.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 13:12
14bc961

Fixed

  • IJobsManager.Resume reports whether the job was actually taken forward. Resuming is allowed to refuse - the job was never prepared, or its owner is no longer interested - and Resume computed that refusal, logged it, and returned void, so a caller could not tell a refusal from a resume. Nothing takes a refused job: it stays Stopped, so it will not run, will not finalize, and will never report back, and a caller that treats that as success waits forever for something that is not coming.

Changed

  • Task Resume(JobId) becomes Task<bool> Resume(JobId). A call that ignores the result is unaffected at source level; an implementer of the interface is not. A job that fails to start is a different situation and keeps its existing handling.

Notes

This is the port of Chronicle's 1f550cc55 into the package the job engine now lives in. The JobStep half of the same story - only answering AlreadyStarted when the activation actually holds in-flight work - arrived here already in #13, and this is the remaining half.

In Chronicle the missing return value stranded an observer in preparing-catch-up: CaughtUp is what lowers the preparing flag, so with the flag raised Handle dropped every live event, the watchdog cleared the flag and re-routed, catch-up found the same stopped job, it refused again, and five rounds later the observer was quarantined for a strand that was only ever a job nobody owned.

Labeled minor following #13, which shipped the sibling fix under the same kind of change.

148 specs pass; the solution builds with zero warnings. when_resuming becomes a folder covering both outcomes - the job takes it, and the job refuses.