You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Re-enabling a job with a second-precision cron expression (six fields) via IRuntimeJobRegistry.EnableJob threw a CronFormatException.
An OperationCanceledException thrown by the job itself (e.g. an HttpClient timeout) was reported as a successful run and triggered success-dependent jobs. It is now treated as a failure.
A job throwing an AggregateException bypassed exception handlers, notification handlers and faulted-dependent jobs.
A throwing IJobExecutionProgressReporter callback could break job scheduling and execution. Callback exceptions are now logged and ignored.
The job registry and job schedules were not safe for concurrent changes through IRuntimeJobRegistry while jobs were being scheduled. Concurrent TryRegister calls could also schedule duplicate runs.
A notification handler throwing an AggregateException caused a successful job to be reported as faulted.
Rescheduling racing with RemoveJob could bring a removed job back, and a run could get stranded in a queue that was being removed.
Stopping the host did not wait for jobs that were still running after their job had been removed.
Triggering an instant job for a cron-scheduled job could lead to duplicate cron executions.
Removing a job left its queue worker running and leaked internal resources.
Changed
The scheduler is now signal-driven and no longer polls every job queue every 500 ms.
The built-in retry policies (ExponentialBackoff, FixedInterval) now wait using the registered TimeProvider.
RetryPolicyAttribute rejects a negative retryCount.
Clarified in the documentation that notification handlers are resolved from their own service scope.