Release Notes
This is a preview of the next release that contains important changes in a lot of subsystems. A completely new background processing engine introduced with support for both synchronous and asynchronous processes while using the same model. While processing is still not asynchronous, because storage methods aren't, it's a great step forward.
After dealing with a lot of daylight saving time transition issues, we've decided to build a completely new library to work with cron expression. So the Cronos project was born contains first-class support for time zones and knows about all the subtleties.
And last but not least, it contains major upgrades to the Hangfire.SqlServer package with the new optimized schema with much fewer indexes, and identity columns upgraded to the bigint
type for those, who processed 2,147,483,647 background jobs.
Hangfire.Core
- Added – Entry point for custom job naming strategies available for dashboard (PR #660 by @pieceofsummer).
- Added –
JobDisplayNameAttribute
class for displaying jobs in dashboard, available on .NET Core (PR #993 by @pieceofsummer). - Added – Support async jobs returning
ValueTask<T>
and otherawait
-compatible types (PR #974 by @pieceofsummer). - Added – Support for asynchronous background processes, opens the road toward async storage (PR #1082, #150).
- Added – Circuit breaker pattern for background processes to reduce the logging pressure (PR #1082).
- Added – Processing server is now able to detect it was expired, and restart itself with the new id (PR #1082).
- Added – Ability to use custom delays for automatic retries of a background job (PR #931).
- Added –
ThreadAbortException
andThreadInterruptedException
handling to keep the background process running (PR #1082). - Added – Support for complex Cron expressions, including the
L
,W
,#
characters (PR #853, #494). - Added –
JobActivator.BeginScope
method overload with the full PerformContext (PR #995 by @jeroenvervaeke, #828). - Added – Support for read-only view for dashboard (PR #934 by @mikechamberlain, #423, #758).
- Added – Storage property to control the job expiration time (PR #913 by @rsilvanet).
- Changed – Decrease the size of serialized payloads and remove version information (PR #891).
- Fixed – Server disappears from the list, but still performing the background processing (#796, #1123).
- Fixed – Logging is too aggressive on transient errors (#542).
- Fixed – Daylight saving time transitions now handled perfectly in recurring jobs thanks to Cronos (#567).
- Fixed – Confusing Cron scheduling, when both day-of-week and day-of-month fields set (#979).
Hangfire.SqlServer
- Added – Callback method to allow to open the database with impersonation (PR #907 by @BjoernHund).
- Changed – Identity columns either converted to the
bigint
type, or entirely removed (PR #898). - Changed – Clustered indexes were organized according to the access patterns of their tables (PR #898).
- Changed – Most of secondary indexes were either removed or made filtered (PR #898).
- Fixed – Background processing stops when identity columns exceed the
Int32.MaxValue
(#749). - Fixed – Slowdown of scheduled jobs due to the missing index on the
Set
table (#844).