Releases: HangfireIO/Hangfire
Releases · HangfireIO/Hangfire
1.8.0-rc3
Release Notes
Please see release notes in our blog – https://www.hangfire.io/blog/2023/03/30/hangfire-1.8.0-rc3.html.
Hangfire.Core
- Added – Introduce the
captureDefault
parameter in theCaptureCulture
filter. - Added – Built-in awaiting metric through the
StatisticsDto.Awaiting
for monitoring stats. - Added –
JobStorageFeatures
class to avoid using magic strings in storage features. - Added – Create job atomically when corresponding storage feature supported.
- Added – Support for new MonitoringApi methods for the Awaiting Jobs page.
- Changed – Rely on
captureDefault
when dealing with default cultures instead of compatibility level. - Changed – Rename in a non-breaking way
SetContains
toGetSetContains
for consistency. - Changed – Rely on storage indexing with
Monitoring.AwaitingJobs
feature. - Changed – Rename the
BatchedGetFirstByLowest
feature. - Changed – Throw more descriptive
NotSupportedException
from new storage methods - Changed – Make new methods in
JobStorageMonitor
virtual, not abstract. - Changed – Change GetSetCount with multiple keys in a non-breaking way.
- Fixed – Throw an exception early when
Job.Queue
feature not supported. - Fixed – Don't show assembly details in deleted state renderer.
- Rollback – Use the
AttemptsExceededAction.Delete
option by default in the global automatic retry filter.
Hangfire.SqlServer
- Changed – Enable the
Monitoring.AwaitingJobs
feature for SQL storage. - Changed – Implement the
Transaction.AcquireDistributedLock
feature. - Changed – Implement the
GetSetCount.Limited feature
. - Changed – Implement the
GetSetContains feature
. - Fixed – Detect schema-related options after migration, not before, to get the actual schema version.
1.7.34
Release Notes
Hangfire.Core
- Added – Add reschedule functionality to
BackgroundJob
andIBackgroundJobClient
(by @chrischu). - Fixed –
ArgumentNullException
with tricky generic type with inheritance case for jobs. - Fixed – Display "Aborted servers will be removed…" note only once aborted threshold passed.
1.7.33
Release Notes
Hangfire.SqlServer
- Changed – Use SQL Server as a time authority for server heartbeats.
- Changed – Increase
MinPollingDelayMs
for SQL Server to 100 milliseconds. - Changed – Don't wait on SQL Server's side when using long polling for fetching.
Hangfire.AspNetCore
- Fixed – Implement support
IAsyncDisposable
forIServiceScope
instances for newer .NET platforms.
1.8.0-rc2
Release Notes
Hangfire.Core
- Added – Support for default culture and UI culture via the
UseDefaultCulture
configuration method. - Added –
CompatibilityLevel.Version_180
flag to avoid storing culture parameters when they are the same as default. - Added –
BackgroundJobServerOptions.IsLightweightServer
option to run server with no storage processes. - Changed – Use UI culture from
CurrentCulture
parameter whenCurrentUICulture
one is missing.
Hangfire.SqlServer
- Breaking – Prioritise Microsoft.Data.SqlClient package over System.Data.SqlClient one.
- Changed – Bump internal version of Dapper to 2.0.123.
- Changed – Remove System.Data.SqlClient package from the NuGet dependency graph (by @0xced).
Hangfire.NetCore
- Added –
net451
andnetstandard1.3
targets for the package. - Changed – Use
netstandard2.1
target instead ofnetcoreapp3.0
for the package.
Hangfire.AspNetCore
- Breaking – Make the package to be dependent on Hangfire.NetCore to use the same types.
1.7.32
Release Notes
Hangfire.Core
- Added – First version of Swedish translation of the Dashboard UI (by @karl-sjogren).
- Changed – More detailed message for exception when
JobStorage.Current
is not initialized. - Changed – Make
TypeHelperSerializationBinder
class public to use it from custom serializer settings. - Fixed – Small typos in French resources for the Dashboard UI (by @agriffard).
- Fixed – Document the exception for the
IJobCancellationToken
interface method (by @judah4).
Hangfire.NetCore and Hangfire.AspNetCore
- Changed – Wait for application to be ready before starting the server when using
AddHangfireServer
. - Fixed – Do not return
null
as result ofStopAsync
in hosted service implementation (by @tomaszek92).
1.7.31
Release Notes
Hangfire.Core
- Added –
RecurringJob.TriggerJob
method that returns identifier of a triggered background job. - Added –
RecurringJobManager.TriggerJob
as a replacement for theTriggerExecution
method. - Changed – Update Moment.js library used by Dashboard UI to version 2.29.4 (by @mmitchell-w).
- Fixed – Typos in pt-BR translation (by @gumbarros and @marcelcamargo).
- Fixed – Added missing parameter annotations for methods of the
RecurringJob
class. - Deprecated –
RecurringJob.Trigger
method is now obsolete,TriggerJob
is the replacement. - Deprecated –
RecurringJobManager.TriggerExecution
method is now obsolete,TriggerJob
should be used instead.
New Contributors
- @gumbarros made their first contribution in #2057
- @marcelcamargo made their first contribution in #2072
- @mmitchell-w made their first contribution in #2083
Full Changelog: v1.7.30...v1.7.31
1.8.0-rc1
Release Notes
Hangfire.Core
- Added – Introduce the
Job.Queue
property, so jobs now can have their own queue specified. - Added – Method overloads to create background jobs directly with a custom default queue.
- Added – Method overloads to create recurring jobs directly with a custom default queue.
- Added –
IBackgroundJobClient.Create
method overloads with the newqueue
parameter. - Added –
JobContinuationOptions.OnlyOnDeletedState
to create continuations after a failure. - Added – Make it possible to specify multiple
JobContinuationOptions
values for a continuation. - Added – Ability to use custom formattable resource identifiers for the
DisableConcurrentExecution
filter. - Added – Pass
ServerId
toFailedState
instances to simplify the debugging on different servers. - Added – Allow to pass job parameters when creating a job (by @brian-knoll-micronetonline).
- Added –
MisfireHandlingMode.Strict
to create job for each missed recurring job occurrence. - Added –
DeletedState
now have the persistedException
property populated after a failure. - Added –
Exception
job parameter is passed to continuation whenUseResultsInContinuations
method is used. - Added –
FromExceptionAttribute
to deal with an antecedent exception in a background job continuation. - Added – Allow to filter exception types in
AutomaticRetryAttribute
by using the newOnlyOn
property. - Added – Built-in
Remove
method forJobFilterCollection
to remove global filters based on their type. - Added –
IGlobalConfiguration.UseFilterProvider
extension method to unify the configuration. - Changed – Use the
AttemptsExceededAction.Delete
option by default in the global automatic retry filter. - Changed – Query time from storage in recurring and delayed schedulers when supported by storage.
- Changed – Increase the default value for the
BackgroundJobServerOptions.StopTimeout
to 500 ms. - Changed – Speedup delayed jobs when custom default queue is specified by avoiding extra state transition.
- Changed – Move job to the
DeletedState
instead ofSucceededState
when its invocation was canceled by a filter. - Deprecated –
AddOrUpdate
overloads with optional params defined in theRecurringJobManagerExtensions
class. - Deprecated –
AddOrUpdate
overloads with optional parameters defined in theRecurringJob
class. - Deprecated –
AddOrUpdate
method overloads with norecurringJobId
parameter. - Deprecated –
RecurringJobOptions.QueueName
property, new methods should be used instead. - Breaking – Dropped
NET45
platform target in favor ofNET451
target to support Visual Studio 2022.
Dashboard UI
- Added – Dark mode support for Dashboard UI configurable with the
UseDarkModeSupportForDashboard
method (by @danillewin). - Added – Dashboard UI now have full-width layout to display more data (by @danillewin).
- Added – Allow to add custom JavaScript and CSS files to the Dashboard UI via the
DashboardRoutes
class. - Added –
IGlobalConfiguration.UseJobDetailsRenderer
method for custom renderers for Job Details page. - Added – Display deleted jobs in the Realtime and History graphs when supported by storage.
- Added –
IGlobalConfiguration.UseDashboardMetrics
extension method to pass multiple metrics at once. - Added – State renderer for the
DeletedState
to display its new exception property. - Changed – Make it possible to display methods of non-loaded jobs in Dashboard UI when supported by storage.
- Changed – Improved display of real-time chart with more accents on failed and deleted jobs.
- Changed – Don't display queue name in state transition list when it's the
default
one. - Changed – Display scheduled job count when enqueued count is zero on the main metric.
Extensibility
- Added –
Factory
,StateMachine
andPerformer
properties to context classes to avoid injecting services. - Added – Allow to pass custom data to
ApplyStateContext
andElectStateContext
instances. - Added – Preserve custom data dictionary between the entire filter chain.
- Added – Allow to pass transaction to background job state changer when new methods implemented.
- Changed – Ignore some members when serializing a
JobFilterAttribute
instance to decrease payload size.
Storage
- Added – Virtual
JobStorage.GetReadOnlyConnection
method intended to returnJobStorageConnection
for replicas. - Added – Virtual
JobStorage.HasFeature
method for querying optional features. - Added – Optional
GetSetCount
andGetUtcDateTime
methods for theJobStorageConnection
class. - Added – Optional
AcquireDistributedLock
andRemoveFromQueue
methods for theJobStorageTransaction
class. - Added – Support for transactional acknowledge using new storage method for better handling some data loss scenarios.
- Added –
CreateJob
method to theJobStorageTransaction
abstract class. - Added –
SetJobParameter
method to theJobStorageTransaction
abstract class. - Added – Experimental
JobStorageConnection.SetContains
method. - Added – Optional
ParametersSnapshot
property forBackgroundJob
andJobData
classes to minimize roundtrips in future. - Added – Fetch "Retries" metric with other statistics when supported by storage.
- Added –
JobStorageMonitor
class with more available methods for the new features. - Changed – Allow to query job parameters without additional roundtrip when supported by a storage.
- Changed – Expose state data dictionaries in list DTOs when supported by storage.
Internals
- Added –
IBackgroundProcess.UseBackgroundPool
now allows to pass thread configuration logic. - Added –
BackgroundJobServerOptions.WorkerThreadConfigurationAction
option for custom thread configuration. - Changed – Allow changing queues on the fly with custom worker configuration.
- Changed – Avoid storage roundtrip to query job data in worker, take data from previous state change.
- Changed –
FromParameterAttribute
-based logic now always overwrites arguments, even with non-null values. - Changed – Turn
JobContinuationOptions
enum into flags while still possible. - Changed – Re-implement
TaskExtensions.WaitOneAsync
only with theRegisterWaitForSingleObject
method. - Changed –
ServerHeartbeatProcess
now usesThreadPriority.AboveNormal
to prioritize heartbeats.
Hangfire.SqlServer
- Added – Recommended Schema 8 migration with fixed
JobQueue.Id
column to use thebigint
type. - Added – Automatic client package detection based on available types, preferring
System.Data.SqlClient
(by @0xced). - Added –
SqlServerStorageOptions.DbProviderFactory
option to use custom provider factory. - Added –
TryAutoDetectSchemaDependentOptions
option to automatically enable options based on schema. - Added –
SqlServerStorage.SchemaVersion
metric for Dashboard UI. - Added – Optional experimental transactional acknowledge for SQL Server (
UseTransactionalAcknowledge
option). - Added – Implement the
Connection.GetUtcDateTime
feature to make work new changes in schedulers. - Changed – Remove dependency on System.Data.SqlClient for Hangfire.SqlServer (by @0xced).
- Changed – Set default value for the
QueuePollInterval
option toTimeSpan.Zero
. - Changed – Polling delay when
QueuePollInterval
is set to zero now defaults to 200 ms. - Changed – Sliding invisibility timeout-based fetching method is now used by default with 5 minute timeout.
- Changed – Use command batching by default with 5-minute maximum timeout.
- Changed – Enable
UseRecommendedIsolationLevel
option by default. - Changed –
GetJobData
now populatesJobData.ParametersSnapshot
property to avoid additional round-trips. - Changed – Display scheduled and processing jobs in the ascending order in Dashboard UI.
- Deprecated –
UsePageLocksOnDequeue
option is now obsolete and doesn't affect anything. - Breaking – Dropped
NET45
platform target in favor ofNET451
target to support Visual Studio 2022.
Hangfire.SqlServer.Msmq
- Breaking – Dropped
NET45
platform target in favor ofNET451
target to support Visual Studio 2022.
Hangfire.NetCore and Hangfire.AspNetCore
- Added –
IApplicationBuilder.UseHangfireServer
that accepts custom factory forIBackgroundProcessingServer
.
1.7.30
Release Notes
- Fixed – Don't consider
SecurityException
as a non-catchable one. - Fixed – Replace timer with a dedicated thread in
AspNetShutdownDetector
to avoid depending on thread pool. - Fixed – Better ASP.NET shutdown detection with yet another check based on internal state.
- Fixed – Decrease
AspNetShutdownDetector
's check intervals to detect shutdowns earlier. - Fixed – Don't wait for server stop on AppDomain unloads when hosting in IIS to avoid delaying them.
1.7.29
Release Notes
Hangfire.Core
- Added –
RecurringJobManager.TriggerExecution
method that returns identifier of a created job. - Added –
GetRecurringJobIds
extension method forJobStorageConnection
that returns only identifiers. - Added –
DashboardMetric.Url
property to make it possible for metrics on the Overview page to be clickable (by @twinmind). - Changed – Bump Moment.js version to 2.29.3 in Dashboard UI (by @Westat-Transportation).
- Fixed – Deserialization issues with
DateOnly
andTimeOnly
in .NET 6.0 or other new types in CoreLib. - Fixed – Don't even try to catch unsafe exceptions like
OutOfMemoryException
orStackOverflowException
. - Fixed – Add non-breaking space between Server Id and Status glyph on the Servers page.
- Fixed – Problems with internal wait implementation shouldn't cause high CPU issues now, added protection and logging.
- Fixed – Wait can't be performed now on a signaled
ManualResetEvent
instance inBackgroundExecution
.
Hangfire.SqlServer
- Fixed – Command batching is now fully working for the Microsoft.Data.SqlClient package (by @0xced).
1.7.28
Release Notes
Hangfire.Core
- Fixed – Reduce the number of attempts in
BackgroundJobStateChanger
to avoid infinite loops. - Fixed – Typos in German translation (by @saxx).
- Fixed – Translations in Turkish translation (by @can-zengin).
Hangfire.SqlServer
- Fixed – Possibly fixed CPU consumption problems and high amounts of fetching queries after deploys to IIS.
- Fixed – No more than a single long-polling query is allowed per storage instance when using sub-second polling.
- Fixed – Don't depend on thread pool when sending heartbeats for active jobs to avoid problems when it's starved.