Release Notes
Hangfire.Core
- Added – Multi-stage shutdown to wait for graceful completion before starting to abort jobs.
- Added – Asynchronous checks for job cancellation,
IJobCancellationToken
can be replaced withCancellationToken
(PR #976 by @pieceofsummer). - Added – Possibility to create millions of recurring jobs without stressing the scheduler.
- Added – Second-based recurring jobs are fully supported now with 6-part cron expressions (#167, #1262).
- Added – Support for custom
TimeZoneInfo
resolvers in recurring jobs for interoperability purposes. - Added – Package now explicitly targets .NET Standard 2.0, and .NET Framework 4.6 target added as well (PR #1309).
- Added – Type round-trip support between .NET Core and .NET Framework for most common types.
- Added – Allow to specify queue names based on job arguments with
QueueAttribute
via patterns. - Added –
PerformContext.Storage
property to allow server filters to spawn connections. - Added –
GetFirstByLowestScoreFromSet
connection method overload that returns multiple items (PR #1251 by @cdschneider). - Changed – New type serialization is disabled by default for compatibility reasons.
- Changed – Cronos package upgraded to 0.7.0 and internalized even on .NET Standard platforms.
- Changed – Replace Rickshaw with Chart.js to have beautiful charts with less headache (PR #1315).
- Changed –
DelayedJobScheduler
is able to use the new storage method to query multiple jobs at once (PR #1330, #38). - Changed –
RecurringJobScheduler
now uses index-based checks to fetch only those jobs that should be scheduled (PR #1334). - Fixed –
ArgumentNullException
when job class contains method with non-resolvable generic arguments. - Fixed – Re-add missing fonts as embedded resources due to a regression appeared in 1.7.0-beta2.
- Fixed – "Failed to initialize CoreCLR" error, by removing reference to
Microsoft.NETCore.Portable.Compatibility
(#982, #1074). - Fixed – Intermittent
JsonSerializationException
in .NET Core 2.0 (#1214). - Fixed – Possible race conditions in
RecurringJobScheduler
that may lead to job duplicates. - Fixed – Configuration inconsistency introduced in 1.6.18 leading to issues with custom
JobActivator
. - Fixed – Backward compatibility issue with type serialization when
TypeNameHandling.All
is used. - Fixed – Triggering the recurring task doesn't update its last execution time (#233).
- Fixed – Recurring job which don't have next execution (intentionally or not) don't cause exception.
- Fixed – Dashboard recurring jobs sorting is random (now it's based on next execution time, #391, #791).
- Fixed – Performance problems with huge amount of recurring jobs (#449).
- Fixed –
NextExecution
field of a recurring job has delay in value getting set. (#843) - Fixed – Dashboard graphs have improper sizing (#1011).
- Ported – Merged updates from version 1.6.21 and 1.6.22.
Hangfire.AspNetCore
- Added – Full .NET Core 2.0 support by explicitly targeting .NET Standard 2.0.
- Added – An overloaded AddHangfire method with
IServiceProvider
parameter (#954 by @ericgreenmix and #1114 by @denis-ivanov). - Added –
BackgroundJobServerHostedService
class based onIHostedService
interface (#962). - Added –
IServiceCollection.AddHangfireServer
method to register the server during configuration.
Hangfire.SqlServer
- Changed – Short paths for the CreateExpiredJob method to avoid some round-trips.
- Changed – Allow to use zero-based poll interval when sliding invisibility timeout.
- Changed – Set
SqlParameter
types explicitly to not to duplicate query plans. - Changed – Batch support for
AddToQueue
method when default provider is used (PR #1331). - Changed – Check
FetchedAt
has expected value to prevent prolonging others' work. - Changed – Use more recent Dapper 1.50.7 on all platforms except .NET Framework 4.5.
- Changed – Dapper package is internalized now even on .NET Core to avoid possible conflicts.
- Ported – Merged updates from versions 1.6.21 and 1.6.22.