This correcting release contains a lot of stability improvements for Hangfire.SqlServer, especially for SQL Azure Database environments. Processing is now more predictable even in Basic pricing tier, there is a special harness application that’s running 24/7 to ensure everything is fine. Some problems related to I18N, authorisation and continuations were also fixed.
Hangfire.Core
- Added – Chinese language to Dashboard UI (by @andy-zhouyou).
- Changed – Default upper limit of worker number is 20.
- Changed – Default value for DashboardJobListLimit is now 10000.
-
Fixed – Deserialization exception in continuations, when
TypeNameHandling.All
option is used (by @MaksimSimkin). - Fixed – I18N is not working, because there are no localized resources in NuGet packages.
- Fixed – Infinite redirect loops, when authenticated, but not authorized user accesses Dashboard UI.
-
Fixed – “The type … exists in both…” issue when building Hangfire, related to
Newtonsoft.Json
. - Fixed – Use the given type’s method, when scope variable is passed to a job expression.
- Fixed – Very rare resource leaks detected by Coverity Scan.
Hangfire.SqlServer
- Fixed – Different timeout issues after making performance optimisations.
- Fixed – SQL timeouts while getting a connection, when using default settings and ≥ 8 CPU cores.
-
Fixed –
ExpirationManager
is bloated bySqlError
instances, when there are a lot of messages from server. -
Fixed – Counters query returned inconsistent results during
CountersAggregator
executions. -
Performance – Added missing
NOLOCK
hint for monitoring queries when using SqlServer-based queues. -
Performance –
ExpirationManager
is forced to use index seek operations for cascade deletions. -
Performance –
CountersAggregator
now uses clustered index scan to issue less logical reads. - Performance – Paging queries in dashboard now use CTEs to utilize less logical reads.