Releases: HangfireIO/Hangfire
Releases · HangfireIO/Hangfire
1.8.6
Release Notes
Hangfire.Core
- Changed – Update jQuery library in Dashboard UI to version 3.7.1.
- Changed – Mark all types in Hangfire.Annotations with
EditorBrowsableAttribute(Never)
. - Changed – Change state card colors for the Awaiting state to match the Scheduled state.
- Fixed – Exception when deserializing an instance of the
AutomaticRetryAttribute
class from JSON. - Fixed – Add serialization-related constructors for all the exception classes.
- Fixed – Use invariant culture or ordinal comparisons for internal strings.
- Fixed – Use invariant culture when formatting key names for metrics.
- Fixed – Use
CurrentCulture
instead ofCurrentUICulture
when displaying time. - Project – Enable running static analysis by Coverity Scan weekly.
- Project – Enable mandatory static analysis by the Microsoft.CodeAnalysis.NetAnalyzers package.
- Project – Change MSBuild path when building using newer .NET SDKs for Razor views.
Hangfire.SqlServer
- Fixed – Exception in Dashboard UI when schema version is not present in a database.
- Fixed –
DbCommand
resource leak when releasing a lock detected by static analysis. - Fixed – Don't add SQL Server-related metrics multiple times in Dashboard UI.
Hangfire.NetCore
- Fixed – Include assembly information to the Hangfire.NetCore assembly.
1.8.5
Release Notes
Hangfire.Core
- Added – Possibility to inform a
FaviconPath
onDashboardOptions
(by @cezar-pimentel). - Fixed – Inability to restore a disabled recurring job, regression in version 1.8.3.
- Fixed – Make it possible to serialize the
AutomaticRetryAttribute
filter to JSON.
Hangfire.SqlServer
- Fixed – "Query processor could not produce a query plan" when removing expired counters in
Schema 5
.
1.8.4
Release Notes
Hangfire.Core
- Added – Pass server id from a worker to the
PerformContext.ServerId
property available in filters. - Fixed – Send heartbeats until full background processing server shutdown.
Hangfire.NetCore
- Changed – Send the stop signal earlier in the shutdown pipeline when hosting in .NET Core 3.1 or higher.
- Changed – Set processing server to null in hosted service to avoid
ObjectDisposedException
. - Fixed – Other
IHostedService
implementations can block Hangfire server from being stopped.
1.7.36
1.8.3
Release Notes
Hangfire.Core
- Changed – Allow to configure
MaxLinesInStackTrace
for a particularFailedState
instance. - Fixed – Remove job id from schedule when it's not in the Scheduled state for some reason.
- Fixed – Missing invocations of recurring jobs when the new "Ignorable" option is used.
- Fixed – Make
DisableConcurrentExecutionAttribute
andLatencyTimeoutAttribute
serializable.
1.8.2
Release Notes
Hangfire.Core
- Changed – Disable transactional job creation feature appeared in 1.8.0.
- Fixed – "Can not start continuation XXX" error when storage supports transactional job creation.
Hangfire.SqlServer
- Fixed –
InvalidOperationException
with new dashboard metrics when a database has multiple data/log files.
1.8.1
Release Notes
Hangfire.Core
- Added –
MisfireHandlingMode.Ignorable
to avoid scheduling recurring jobs on missed schedules. - Added – Support disabling dark mode via the
DashboardOptions.DarkModeEnabled
property. - Changed – Remove the 1-hour limitation for the
WithJobExpirationTimeout
configuration method. - Fixed – Add missing
UseDefaultCulture
configuration method overloads. - Fixed – Add missing
UseDashboardStylesheet
andUseJobDetailsRenderer
configuration methods. - Fixed – Give even more space for identifiers on the Recurring Jobs page.
- Fixed –
state-card-state-active
color is not very dark (by @coolhome). - Fixed – Slightly change chart proportions to fit 4K in Dashboard UI.
Hangfire.SqlServer
- Fixed – Blocked workers regression since 1.7.28 when using multiple servers inside a process.
- Fixed – Target schema version is less than the current schema version error.
- Fixed – Implement database metrics without the need for additional permissions.
- Fixed – Use the
forceseek
table hint whenever possible to avoid performance drops.
Hangfire.NetCore
- Fixed – Add
net461
target for Hangfire.NetCore package to avoid missing method exceptions.
1.7.35
1.8.0
Release Notes
Please see more human-friendly release notes in our blog https://www.hangfire.io/blog/2023/04/28/hangfire-1.8.0.html. Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.
Hangfire.Core
- Breaking – Dropped the
NET45
platform target in favor of theNET451
target to support Visual Studio 2022. - 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 – Allow to filter exception types in
AutomaticRetryAttribute
by using the newOnlyOn
property. - Added –
DeletedState
now has the persistedException
property populated after a failure. - Added –
JobContinuationOptions.OnlyOnDeletedState
to create continuations 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 – Make it possible to specify multiple
JobContinuationOptions
values for a continuation. - Added –
BackgroundJobServerOptions.IsLightweightServer
option to run a server with no storage processes. - 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 a job for each missed recurring job occurrence. - Added – Support for default culture and UI culture via the
UseDefaultCulture
configuration method. - Added – Introduce the
captureDefault
parameter in theCaptureCulture
filter. - Added –
IGlobalConfiguration.UseFilterProvider
extension method to unify the configuration. - Added – Built-in
Remove
method forJobFilterCollection
to remove global filters based on their type. - Added –
CompatibilityLevel.Version_180
flag to avoid storing culture parameters when they are the same as the default ones. - Changed – Create job atomically when
Transaction.CreateJob
feature is supported by the storage. - Changed – Query time from storage in recurring and delayed schedulers when supported by storage.
- Changed – Move job to the
DeletedState
instead ofSucceededState
when its invocation was canceled by a filter. - Changed – Speedup delayed jobs when a custom default queue is specified by avoiding extra state transition.
- Changed – Use UI culture from
CurrentCulture
parameter whenCurrentUICulture
one is missing. - Changed – Increase the default value for the
BackgroundJobServerOptions.StopTimeout
to 500 ms. - 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 depending on the system settings (by @danillewin).
- Added – Dashboard UI now has a 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 –
DefaultRecordsPerPage
property on theDashboardOptions
class (by @PaulARoy). - Added –
IGlobalConfiguration.UseJobDetailsRenderer
method for custom renderers for the 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. - Added – Support for new
MonitoringApi
methods for the Awaiting Jobs page. - Changed – Make it possible to display methods of non-loaded jobs in the Dashboard UI when supported by storage.
- Changed – Improved display of realtime chart with more accents on failed and deleted jobs.
- Changed – Don't display the queue name in the state transition list when it's the
default
one. - Changed – Display scheduled job count when the 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 a transaction to background job state changer when new methods are implemented.
- Changed – Ignore some members when serializing a
JobFilterAttribute
instance to decrease the payload size.
Storage
- Added – Virtual
JobStorage.GetReadOnlyConnection
method intended to returnJobStorageConnection
for replicas. - Added – Virtual
JobStorage.HasFeature
method for querying optional features. - Added – The
JobStorageFeatures
class to avoid using magic strings in storage features. - Added – Optional
GetSetCount
,GetSetContains
, andGetUtcDateTime
methods for theJobStorageConnection
class. - Added – Optional
AcquireDistributedLock
andRemoveFromQueue
methods for theJobStorageTransaction
class. - Added – Optional
CreateJob
andSetJobParameter
methods for theJobStorageTransaction
class. - Added – Optional
ParametersSnapshot
property forBackgroundJob
andJobData
classes to minimize roundtrips in the future. - Added – Support for transactional acknowledgment using a new storage method for better handling some data loss scenarios.
- Added – Fetch
Retries
andAwaiting
metrics inStatisticsDto
properties when supported by storage. - Added – The
JobStorageMonitor
class with more available methods for the new features. - Changed – Allow to query job parameters without additional roundtrip when supported by storage.
- Changed – Expose state data dictionaries in list DTOs when supported by storage.
- Changed – Rely on storage indexing with the
Monitoring.AwaitingJobs
feature.
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 the
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.NetCore
- Added –
IApplicationBuilder.UseHangfireServer
that accepts custom factory forIBackgroundProcessingServer
. - Added –
net451
andnetstandard1.3
targets for the package. - Changed – Use
netstandard2.1
target instead ofnetcoreapp3.0
for the package. - Changed – Send the "stop" signal earlier when the host supports .NET Standard 2.1.
- Changed – Don't throw
ObjectDisposedException
when hosted service is disposed twice.
Hangfire.AspNetCore
- Breaking – Make the package to be dependent on Hangfire.NetCore and use the same types.
- Added –
IApplicationBuilder.UseHangfireServer
that accepts custom factory forIBackgroundProcessingServer
.
Hangfire.SqlServer
- Breaking – Prioritise Microsoft.Data.SqlClient package over System.Data.SqlClient one.
- Breaking – Dropped the
NET45
platform target in favor of theNET451
target to support Visual Studio 2022. - Added –
Schema 8
migration with fixedJobQueue.Id
column to use thebigint
type. - Added –
Schema 9
migration that creates an index for theState.CreatedAt
column. - Added – Automatic client package detection based on available types, preferring
System.Data.SqlClient
(by @0xced). - Added –
SqlServerStorageOptions.DbProviderFactory
option to use a custom provider factory. - Added – Clean up of old state entries of a non-finished job when
InactiveStateExpirationTimeout
is set. - Added –
TryAutoDetectSchemaDependentOptions
option to automatically enable options based on the schema. - Added – Optional experimental transactional acknowledge for SQL Server (
UseTransactionalAcknowledge
option). - Added – Implement the
Connection.GetUtcDateTime
feature to make work the new changes in schedulers. - Added –
SqlServerStorage.SchemaVersion
metric for Dashboard UI. - Added –
DefaultQueueProvider
option to specify a custom default queue provider. - Changed – Remove dependency on System.Data.SqlClient for Hangfire.SqlServer (by @0xced).
- Changed – Set default value for the
QueuePollInterval
option toTimeSpan.Zero
. - *Changed...
1.8.0-rc4
Release Notes
Hangfire.Core
- Added –
DefaultRecordsPerPage
property on theDashboardOptions
class (by @PaulARoy).
Hangfire.NetCore
- Changed – Send the "stop" signal earlier when host supports .NET Standard 2.1.
- Changed – Don't throw
ObjectDisposedException
when hosted service disposed twice.
Hangfire.SqlServer
- Added –
Schema 9
migration that creates index for theState.CreatedAt
column. - Added – Clean up of old state entries of a non-finished job when
InactiveStateExpirationTimeout
is set. - Added –
DefaultQueueProvider
option to specify a custom default queue provider. - Changed – Enable common metrics for SQL Server storage to be shown by default.