Skip to content

Release v1.17.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 07:47
a0662c0

Jobs left running by a silo that crashed or was restarted now resume by themselves, on a surviving silo or on the silo that comes back, without the application calling Resume() or Rehydrate().

Added

  • IJobsManagerKeys: implement it to list the job scopes and namespaces your host runs jobs in (for example event store × tenant namespaces), so recovery can find every interrupted job. Without one, recovery covers only the scopes this silo has used and logs a startup warning. See Jobs. (#63)
  • AddCratisOrleansJobsRecovery() on ISiloBuilder registers job recovery for silos not set up through AddCratisOrleans (such as TestCluster silos). (#63)

Fixed

  • A persisted Running job whose silo crashed is resumed: its unfinished steps are started again under the same job id, scope and namespace, completed steps stay completed and a stopped job stays stopped. Recovery runs when a silo becomes active and, on one surviving silo, when a cluster member is declared dead. A step that was interrupted runs again from the start, so step work must be safe to repeat. (#63)
  • Resume() no longer reports JobAlreadyRunning for a job whose steps have no live work, and a job interrupted while it was still being prepared returns an explicit failure instead of success. (#63)
  • A Rehydrate() that arrives while a rehydration is in progress now runs another pass afterwards instead of being dropped.
  • A step outcome that reaches a job after it already completed no longer changes its progress or recreates its stored state.

Security

  • Cratis.Orleans.Storage.Sql references System.Security.Cryptography.Pkcs 10.0.13, replacing the 9.0.11 that Microsoft.Data.SqlClient brought in, which is affected by GHSA-846f-f764-76mx and GHSA-2fmv-rv2c-59x7.