Skip to content

Releases: HangfireIO/Hangfire

1.8.6

18 Oct 10:28
v1.8.6
98193fa
Compare
Choose a tag to compare

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 of CurrentUICulture 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.
  • FixedDbCommand 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

11 Aug 10:44
v1.8.5
7db7ba0
Compare
Choose a tag to compare

Release Notes

Hangfire.Core

  • Added – Possibility to inform a FaviconPath on DashboardOptions (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

27 Jul 10:49
v1.8.4
e1d3efd
Compare
Choose a tag to compare

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

29 Jun 04:43
v1.7.36
0693edd
Compare
Choose a tag to compare

Release Notes

Hangfire.Core

  • Fixed – Remove job id from schedule when it's not in the Scheduled state for some reason.

Hangfire.NetCore and Hangfire.AspNetCore

  • Changed – Set processing server to null in hosted service to avoid ObjectDisposedException.

1.8.3

27 Jun 08:52
v1.8.3
633e6e6
Compare
Choose a tag to compare

Release Notes

Hangfire.Core

  • Changed – Allow to configure MaxLinesInStackTrace for a particular FailedState 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 and LatencyTimeoutAttribute serializable.

1.8.2

26 May 11:23
v1.8.2
5bc4564
Compare
Choose a tag to compare

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

  • FixedInvalidOperationException with new dashboard metrics when a database has multiple data/log files.

1.8.1

18 May 10:44
v1.8.1
849b672
Compare
Choose a tag to compare

Release Notes

Hangfire.Core

  • AddedMisfireHandlingMode.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 and UseJobDetailsRenderer configuration methods.
  • Fixed – Give even more space for identifiers on the Recurring Jobs page.
  • Fixedstate-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

18 May 10:22
v1.7.35
908f55a
Compare
Choose a tag to compare

Release Notes

Hangfire.SqlServer

  • Fixed – Blocked workers regression since 1.7.28 when using multiple servers inside a process.

1.8.0

28 Apr 06:34
v1.8.0
858f19d
Compare
Choose a tag to compare

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 the NET451 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.
  • AddedIBackgroundJobClient.Create method overloads with the new queue parameter.
  • Added – Allow to filter exception types in AutomaticRetryAttribute by using the new OnlyOn property.
  • AddedDeletedState now has the persisted Exception property populated after a failure.
  • AddedJobContinuationOptions.OnlyOnDeletedState to create continuations after a failure.
  • AddedException job parameter is passed to continuation when UseResultsInContinuations method is used.
  • AddedFromExceptionAttribute to deal with an antecedent exception in a background job continuation.
  • Added – Make it possible to specify multiple JobContinuationOptions values for a continuation.
  • AddedBackgroundJobServerOptions.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 to FailedState instances to simplify the debugging on different servers.
  • Added – Allow to pass job parameters when creating a job (by @brian-knoll-micronetonline).
  • AddedMisfireHandlingMode.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 the CaptureCulture filter.
  • AddedIGlobalConfiguration.UseFilterProvider extension method to unify the configuration.
  • Added – Built-in Remove method for JobFilterCollection to remove global filters based on their type.
  • AddedCompatibilityLevel.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 of SucceededState 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 when CurrentUICulture one is missing.
  • Changed – Increase the default value for the BackgroundJobServerOptions.StopTimeout to 500 ms.
  • DeprecatedAddOrUpdate overloads with optional params defined in the RecurringJobManagerExtensions class.
  • DeprecatedAddOrUpdate overloads with optional parameters defined in the RecurringJob class.
  • DeprecatedAddOrUpdate method overloads with no recurringJobId parameter.
  • DeprecatedRecurringJobOptions.QueueName property, new methods should be used instead.
  • Breaking – Dropped NET45 platform target in favor of NET451 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.
  • AddedDefaultRecordsPerPage property on the DashboardOptions class (by @PaulARoy).
  • AddedIGlobalConfiguration.UseJobDetailsRenderer method for custom renderers for the Job Details page.
  • Added – Display deleted jobs in the Realtime and History graphs when supported by storage.
  • AddedIGlobalConfiguration.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

  • AddedFactory, StateMachine, and Performer properties to context classes to avoid injecting services.
  • Added – Allow to pass custom data to ApplyStateContext and ElectStateContext 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 return JobStorageConnection 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, and GetUtcDateTime methods for the JobStorageConnection class.
  • Added – Optional AcquireDistributedLock and RemoveFromQueue methods for the JobStorageTransaction class.
  • Added – Optional CreateJob and SetJobParameter methods for the JobStorageTransaction class.
  • Added – Optional ParametersSnapshot property for BackgroundJob and JobData 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 and Awaiting metrics in StatisticsDto 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

  • AddedIBackgroundProcess.UseBackgroundPool now allows to pass thread configuration logic.
  • AddedBackgroundJobServerOptions.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.
  • ChangedFromParameterAttribute-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 the RegisterWaitForSingleObject method.
  • ChangedServerHeartbeatProcess now uses ThreadPriority.AboveNormal to prioritize heartbeats.

Hangfire.NetCore

  • AddedIApplicationBuilder.UseHangfireServer that accepts custom factory for IBackgroundProcessingServer.
  • Addednet451 and netstandard1.3 targets for the package.
  • Changed – Use netstandard2.1 target instead of netcoreapp3.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.
  • AddedIApplicationBuilder.UseHangfireServer that accepts custom factory for IBackgroundProcessingServer.

Hangfire.SqlServer

  • Breaking – Prioritise Microsoft.Data.SqlClient package over System.Data.SqlClient one.
  • Breaking – Dropped the NET45 platform target in favor of the NET451 target to support Visual Studio 2022.
  • AddedSchema 8 migration with fixed JobQueue.Id column to use the bigint type.
  • AddedSchema 9 migration that creates an index for the State.CreatedAt column.
  • Added – Automatic client package detection based on available types, preferring System.Data.SqlClient (by @0xced).
  • AddedSqlServerStorageOptions.DbProviderFactory option to use a custom provider factory.
  • Added – Clean up of old state entries of a non-finished job when InactiveStateExpirationTimeout is set.
  • AddedTryAutoDetectSchemaDependentOptions 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.
  • AddedSqlServerStorage.SchemaVersion metric for Dashboard UI.
  • AddedDefaultQueueProvider 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 to TimeSpan.Zero.
  • *Changed...
Read more

1.8.0-rc4

25 Apr 07:50
v1.8.0-rc4
29c9fcb
Compare
Choose a tag to compare
1.8.0-rc4 Pre-release
Pre-release

Release Notes

Hangfire.Core

  • AddedDefaultRecordsPerPage property on the DashboardOptions 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

  • AddedSchema 9 migration that creates index for the State.CreatedAt column.
  • Added – Clean up of old state entries of a non-finished job when InactiveStateExpirationTimeout is set.
  • AddedDefaultQueueProvider option to specify a custom default queue provider.
  • Changed – Enable common metrics for SQL Server storage to be shown by default.