NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #373 most downloaded on NuGet
SQL Server 2008+ (including Express), SQL Server LocalDB and SQL Azure storage support for Hangfire, a background job framework for .NET applications.
Last release 1 months ago
28 Aug 2026
Ships fairly regularly
a new release about every 3 months
Rarely documented
notes for 10 of the last 60 stable releases
44 versions withdrawn
withdrawn after publishing
127 years old
178 releases · first in 1900
Release notes are available in our blog https://www.hangfire.io/blog/ Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfi
Release notes are available in our blog https://www.hangfire.io/blog/ Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.
1.8.25
• Added – SqlServerStorageOptions.DisableFetchSemaphores option to remove synchronization between workers.
1.8.22
• Fixed – InvalidCastException when creating a background job with Schema 5 (regression from 1.8.15).
• Project – Replace the netcoreapp3.1 target with the net8.0 one in tests.
1.8.21
• Added – SqlServerStorageOptions.DisableTransactionScope option for .NET Framework targets.
• Project – Port Monitoring API tests from the Hangfire.InMemory storage for better coverage.
• Project – Run tests for different targets in parallel with different databases.
DisableConcurrentExecutionAttribute (#2581 by @net0well).SqlServerStorageOptions.DisableFetchSemaphores option to remove synchronization between workers (0b6ef50).Full Changelog: v1.8.24...v1.8.25
One column per quarter.
by @odinserj
August 28, 2026
release, hangfire-core
0 Comments
Edit on GitHub
Maintenance release with updated translations and added SqlServerStorageOptions.DisableFetchSemaphores option to remove synchronization between workers. Continue Reading →
Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
Release notes are available in our blog https://www.hangfire.io/blog/ Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.
1.8.22
• Fixed – InvalidCastException when creating a background job with Schema 5 (regression from 1.8.15).
• Project – Replace the netcoreapp3.1 target with the net8.0 one in tests.
1.8.21
• Added – SqlServerStorageOptions.DisableTransactionScope option for .NET Framework targets.
• Project – Port Monitoring API tests from the Hangfire.InMemory storage for better coverage.
• Project – Run tests for different targets in parallel with different databases.
1.8.19 • Fixed – Sliding invisibility timeout isn't prolonged in lightweight servers, causing jobs to be restarted.
1.8.17
• Fixed – InvalidCastException while fetching a job with older schemas regression from 1.8.16.
1.8.16
• Changed – Use vanilla ADO.NET when fetching a job in the SqlServerJobQueue implementation.
• Fixed – SqlException: Must declare the scalar variable "@key" in delayed and recurring job schedulers.
• Fixed – Decrease the LockTimeout time when calling the sp_getapplock procedure to 1 second for less blocking.
• Project – Disable parallel tests execution when building under .NET 9.0.
• Project – Run tests over the latest Microsoft.Data.SqlClient package and the net6.0 platform.
• Project – Reduce execution time of integration tests.
• Project – Disable PoolBlockingPeriod setting on AppVeyor to handle transient test failures.
1.8.15
• Changed – Use query template caching based on schema name to avoid excessive string allocations.
• Changed – Use static callbacks almost anywhere to avoid unnecessary delegate allocations.
• Changed – Use QuerySingle* or ReadSingle* where possible to avoid allocating lists.
• Changed – Unify DbCommand and DbParameter creation logic to improve code consistency.
1.8.13 and 1.8.14 • Changed – Limit polling queries when queues are empty with a semaphore for all configurations. • Changed – Use per-queue signaling for same-process workers, instead of having a global signal. • Fixed – Don't silently truncate queue names, throw an exception instead. • Project – Decrease delays in SQL Server-related tests to complete them faster.
1.8.12
• Fixed – Populate InvocationData and LoadException properties in JobDetails method results.
1.8.10
• Changed – Bump Dapper for the netstandard2.0 platform to version 2.1.28.
• Changed – Bump Dapper for net451 and netstandard1.3 platforms to version 1.60.6.
• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add HangfireIO as a package owner.
1.8.9
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.
• Project – Run unit tests against the net6.0 platform.
1.8.7
• Changed – Avoid throwing an exception when a connection string has duplicate property names.
• Project – Disable tests for netcoreapp1.0 and netcoreapp2.1 targets since they aren't supported in AppVeyor.
• Project – Add a net6.0 target for unit tests instead of the removed ones.
• Project – Modernise projects and build environments to use the newest features.
1.8.6
• 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.
1.8.5
• Fixed – "Query processor could not produce a query plan" when removing expired counters in Schema 5.
1.8.2
• Fixed – InvalidOperationException with new dashboard metrics when a database has multiple data/log files.
1.8.1
• Fixed – Blocked workers regression since 1.7.33 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.
1.8.0
• 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.
• Added – Schema 8 migration with fixed JobQueue.Id column to use the bigint type.
• Added – Schema 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).
• 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 to TimeSpan.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 a 5-minute timeout.
• Changed – Use command batching by default with a 5-minute maximum timeout.
• Changed – Enable the UseRecommendedIsolationLevel option by default.
• Changed – GetJobData now populates the JobData.ParametersSnapshot property to avoid additional roundtrips.
• Changed – Display scheduled and processing jobs in ascending order in Dashboard UI.
• Changed – Implement the Transaction.AcquireDistributedLock feature.
• Changed – Implement the GetSetCount.Limited feature.
• Changed – Implement the GetSetContains feature.
• Changed – Bump the internal version of Dapper to 2.0.123.
• Changed – Enable common metrics for SQL Server storage to be shown by default.
• Changed – Enable the Monitoring.AwaitingJobs feature for SQL storage.
• Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
by @odinserj
July 16, 2026
release, hangfire-core
0 Comments
Edit on GitHub
Patch release with added detection of blocked extension filter executions and Russian translation for Dashboard UI. Continue Reading →
Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
Release notes are available in our blog https://www.hangfire.io/blog/ Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.
1.8.22
• Fixed – InvalidCastException when creating a background job with Schema 5 (regression from 1.8.15).
• Project – Replace the netcoreapp3.1 target with the net8.0 one in tests.
1.8.21
• Added – SqlServerStorageOptions.DisableTransactionScope option for .NET Framework targets.
• Project – Port Monitoring API tests from the Hangfire.InMemory storage for better coverage.
• Project – Run tests for different targets in parallel with different databases.
1.8.19 • Fixed – Sliding invisibility timeout isn't prolonged in lightweight servers, causing jobs to be restarted.
1.8.17
• Fixed – InvalidCastException while fetching a job with older schemas regression from 1.8.16.
1.8.16
• Changed – Use vanilla ADO.NET when fetching a job in the SqlServerJobQueue implementation.
• Fixed – SqlException: Must declare the scalar variable "@key" in delayed and recurring job schedulers.
• Fixed – Decrease the LockTimeout time when calling the sp_getapplock procedure to 1 second for less blocking.
• Project – Disable parallel tests execution when building under .NET 9.0.
• Project – Run tests over the latest Microsoft.Data.SqlClient package and the net6.0 platform.
• Project – Reduce execution time of integration tests.
• Project – Disable PoolBlockingPeriod setting on AppVeyor to handle transient test failures.
1.8.15
• Changed – Use query template caching based on schema name to avoid excessive string allocations.
• Changed – Use static callbacks almost anywhere to avoid unnecessary delegate allocations.
• Changed – Use QuerySingle* or ReadSingle* where possible to avoid allocating lists.
• Changed – Unify DbCommand and DbParameter creation logic to improve code consistency.
1.8.13 and 1.8.14 • Changed – Limit polling queries when queues are empty with a semaphore for all configurations. • Changed – Use per-queue signaling for same-process workers, instead of having a global signal. • Fixed – Don't silently truncate queue names, throw an exception instead. • Project – Decrease delays in SQL Server-related tests to complete them faster.
1.8.12
• Fixed – Populate InvocationData and LoadException properties in JobDetails method results.
1.8.10
• Changed – Bump Dapper for the netstandard2.0 platform to version 2.1.28.
• Changed – Bump Dapper for net451 and netstandard1.3 platforms to version 1.60.6.
• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add HangfireIO as a package owner.
1.8.9
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.
• Project – Run unit tests against the net6.0 platform.
1.8.7
• Changed – Avoid throwing an exception when a connection string has duplicate property names.
• Project – Disable tests for netcoreapp1.0 and netcoreapp2.1 targets since they aren't supported in AppVeyor.
• Project – Add a net6.0 target for unit tests instead of the removed ones.
• Project – Modernise projects and build environments to use the newest features.
1.8.6
• 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.
1.8.5
• Fixed – "Query processor could not produce a query plan" when removing expired counters in Schema 5.
1.8.2
• Fixed – InvalidOperationException with new dashboard metrics when a database has multiple data/log files.
1.8.1
• Fixed – Blocked workers regression since 1.7.33 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.
1.8.0
• 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.
• Added – Schema 8 migration with fixed JobQueue.Id column to use the bigint type.
• Added – Schema 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).
• 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 to TimeSpan.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 a 5-minute timeout.
• Changed – Use command batching by default with a 5-minute maximum timeout.
• Changed – Enable the UseRecommendedIsolationLevel option by default.
• Changed – GetJobData now populates the JobData.ParametersSnapshot property to avoid additional roundtrips.
• Changed – Display scheduled and processing jobs in ascending order in Dashboard UI.
• Changed – Implement the Transaction.AcquireDistributedLock feature.
• Changed – Implement the GetSetCount.Limited feature.
• Changed – Implement the GetSetContains feature.
• Changed – Bump the internal version of Dapper to 2.0.123.
• Changed – Enable common metrics for SQL Server storage to be shown by default.
• Changed – Enable the Monitoring.AwaitingJobs feature for SQL storage.
• Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
AutomaticRetryAttribute is ignored under certain conditions regression from 1.8.14 (by @jirikanda).TypeNameAssemblyFormatHandling in tests with .NET 6 (by @viktor-vintertass).InvalidOperationException: The request reached the end of the pipeline without executing the endpoint.by @odinserj
February 5, 2026
release, news, hangfire-core
0 Comments
Edit on GitHub
This maintenance release fixes a regression appeared in Hangfire.Core 1.8.14 and related to possibly ignored extension filter registrations under some conditions due to unstable sorting, and contains a few other changes. Continue Reading →
All Posts
Release Notes
Hangfire Core
Hangfire Pro
Hangfire Ace
Security Announcements
Hangfire 1.8.25
Hangfire 1.8.24
Hangfire.Pro.Redis 3.3.2 & 2.11.2
Hangfire.Pro 3.0.5
Hangfire 1.8.23
Newsletters are Live Again
New Company, Hangfire OÜ
Dropping TLS 1.0 and 1.1 support
Unaffected by Codecov Breach
Introducing Hangfire.Throttling
Pricing Changes in 2017
12 reasons to use message queuing
Securing NuGet feed and discussion forum
Happy birthday, Hangfire!
Introducing Hangfire Pro
Are your methods ready to run in background?
Subscribe to receive monthly blog updates. Very low traffic, you can unsubscribe at any time.
Subscribe
I agree to be emailed
Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
Release notes are available in our blog https://www.hangfire.io/blog/ Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.
1.8.22
• Fixed – InvalidCastException when creating a background job with Schema 5 (regression from 1.8.15).
• Project – Replace the netcoreapp3.1 target with the net8.0 one in tests.
1.8.21
• Added – SqlServerStorageOptions.DisableTransactionScope option for .NET Framework targets.
• Project – Port Monitoring API tests from the Hangfire.InMemory storage for better coverage.
• Project – Run tests for different targets in parallel with different databases.
1.8.19 • Fixed – Sliding invisibility timeout isn't prolonged in lightweight servers, causing jobs to be restarted.
1.8.17
• Fixed – InvalidCastException while fetching a job with older schemas regression from 1.8.16.
1.8.16
• Changed – Use vanilla ADO.NET when fetching a job in the SqlServerJobQueue implementation.
• Fixed – SqlException: Must declare the scalar variable "@key" in delayed and recurring job schedulers.
• Fixed – Decrease the LockTimeout time when calling the sp_getapplock procedure to 1 second for less blocking.
• Project – Disable parallel tests execution when building under .NET 9.0.
• Project – Run tests over the latest Microsoft.Data.SqlClient package and the net6.0 platform.
• Project – Reduce execution time of integration tests.
• Project – Disable PoolBlockingPeriod setting on AppVeyor to handle transient test failures.
1.8.15
• Changed – Use query template caching based on schema name to avoid excessive string allocations.
• Changed – Use static callbacks almost anywhere to avoid unnecessary delegate allocations.
• Changed – Use QuerySingle* or ReadSingle* where possible to avoid allocating lists.
• Changed – Unify DbCommand and DbParameter creation logic to improve code consistency.
1.8.13 and 1.8.14 • Changed – Limit polling queries when queues are empty with a semaphore for all configurations. • Changed – Use per-queue signaling for same-process workers, instead of having a global signal. • Fixed – Don't silently truncate queue names, throw an exception instead. • Project – Decrease delays in SQL Server-related tests to complete them faster.
1.8.12
• Fixed – Populate InvocationData and LoadException properties in JobDetails method results.
1.8.10
• Changed – Bump Dapper for the netstandard2.0 platform to version 2.1.28.
• Changed – Bump Dapper for net451 and netstandard1.3 platforms to version 1.60.6.
• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add HangfireIO as a package owner.
1.8.9
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.
• Project – Run unit tests against the net6.0 platform.
1.8.7
• Changed – Avoid throwing an exception when a connection string has duplicate property names.
• Project – Disable tests for netcoreapp1.0 and netcoreapp2.1 targets since they aren't supported in AppVeyor.
• Project – Add a net6.0 target for unit tests instead of the removed ones.
• Project – Modernise projects and build environments to use the newest features.
1.8.6
• 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.
1.8.5
• Fixed – "Query processor could not produce a query plan" when removing expired counters in Schema 5.
1.8.2
• Fixed – InvalidOperationException with new dashboard metrics when a database has multiple data/log files.
1.8.1
• Fixed – Blocked workers regression since 1.7.33 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.
1.8.0
• 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.
• Added – Schema 8 migration with fixed JobQueue.Id column to use the bigint type.
• Added – Schema 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).
• 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 to TimeSpan.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 a 5-minute timeout.
• Changed – Use command batching by default with a 5-minute maximum timeout.
• Changed – Enable the UseRecommendedIsolationLevel option by default.
• Changed – GetJobData now populates the JobData.ParametersSnapshot property to avoid additional roundtrips.
• Changed – Display scheduled and processing jobs in ascending order in Dashboard UI.
• Changed – Implement the Transaction.AcquireDistributedLock feature.
• Changed – Implement the GetSetCount.Limited feature.
• Changed – Implement the GetSetContains feature.
• Changed – Bump the internal version of Dapper to 2.0.123.
• Changed – Enable common metrics for SQL Server storage to be shown by default.
• Changed – Enable the Monitoring.AwaitingJobs feature for SQL storage.
• Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
IGlobalConfiguration.UseNoOpLogProvider method to disable logging.Cron class, add remarks in docs instead.SimpleAssemblyTypeSerializer.IBackgroundProcessingServer instances on OWIN app shutdown.AspNetShutdownDetector for early ASP.NET shutdown detection is not working (regression from 1.7.30).netcoreapp3.1 target with the net8.0 one in tests.InvalidCastException when creating a background job with Schema 5 (regression from 1.8.15).netcoreapp3.1 target with the net8.0 one in tests.MapHangfireDashboardWithNoAuthorizationFilters method, which does not include local-only filters.MapHangfireDashboard is used and no dispatcher is found.InvalidOperationException upon receiving a request for 'hangfire/bootstrap.min.css.map'.Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
Release notes are available in our blog https://www.hangfire.io/blog/ Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.
1.8.21
• Added – SqlServerStorageOptions.DisableTransactionScope option for .NET Framework targets.
• Project – Port Monitoring API tests from the Hangfire.InMemory storage for better coverage.
• Project – Run tests for different targets in parallel with different databases.
1.8.19 • Fixed – Sliding invisibility timeout isn't prolonged in lightweight servers, causing jobs to be restarted.
1.8.17
• Fixed – InvalidCastException while fetching a job with older schemas regression from 1.8.16.
1.8.16
• Changed – Use vanilla ADO.NET when fetching a job in the SqlServerJobQueue implementation.
• Fixed – SqlException: Must declare the scalar variable "@key" in delayed and recurring job schedulers.
• Fixed – Decrease the LockTimeout time when calling the sp_getapplock procedure to 1 second for less blocking.
• Project – Disable parallel tests execution when building under .NET 9.0.
• Project – Run tests over the latest Microsoft.Data.SqlClient package and the net6.0 platform.
• Project – Reduce execution time of integration tests.
• Project – Disable PoolBlockingPeriod setting on AppVeyor to handle transient test failures.
1.8.15
• Changed – Use query template caching based on schema name to avoid excessive string allocations.
• Changed – Use static callbacks almost anywhere to avoid unnecessary delegate allocations.
• Changed – Use QuerySingle* or ReadSingle* where possible to avoid allocating lists.
• Changed – Unify DbCommand and DbParameter creation logic to improve code consistency.
1.8.13 and 1.8.14 • Changed – Limit polling queries when queues are empty with a semaphore for all configurations. • Changed – Use per-queue signaling for same-process workers, instead of having a global signal. • Fixed – Don't silently truncate queue names, throw an exception instead. • Project – Decrease delays in SQL Server-related tests to complete them faster.
1.8.12
• Fixed – Populate InvocationData and LoadException properties in JobDetails method results.
1.8.10
• Changed – Bump Dapper for the netstandard2.0 platform to version 2.1.28.
• Changed – Bump Dapper for net451 and netstandard1.3 platforms to version 1.60.6.
• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add HangfireIO as a package owner.
1.8.9
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.
• Project – Run unit tests against the net6.0 platform.
1.8.7
• Changed – Avoid throwing an exception when a connection string has duplicate property names.
• Project – Disable tests for netcoreapp1.0 and netcoreapp2.1 targets since they aren't supported in AppVeyor.
• Project – Add a net6.0 target for unit tests instead of the removed ones.
• Project – Modernise projects and build environments to use the newest features.
1.8.6
• 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.
1.8.5
• Fixed – "Query processor could not produce a query plan" when removing expired counters in Schema 5.
1.8.2
• Fixed – InvalidOperationException with new dashboard metrics when a database has multiple data/log files.
1.8.1
• Fixed – Blocked workers regression since 1.7.33 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.
1.8.0
• 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.
• Added – Schema 8 migration with fixed JobQueue.Id column to use the bigint type.
• Added – Schema 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).
• 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 to TimeSpan.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 a 5-minute timeout.
• Changed – Use command batching by default with a 5-minute maximum timeout.
• Changed – Enable the UseRecommendedIsolationLevel option by default.
• Changed – GetJobData now populates the JobData.ParametersSnapshot property to avoid additional roundtrips.
• Changed – Display scheduled and processing jobs in ascending order in Dashboard UI.
• Changed – Implement the Transaction.AcquireDistributedLock feature.
• Changed – Implement the GetSetCount.Limited feature.
• Changed – Implement the GetSetContains feature.
• Changed – Bump the internal version of Dapper to 2.0.123.
• Changed – Enable common metrics for SQL Server storage to be shown by default.
• Changed – Enable the Monitoring.AwaitingJobs feature for SQL storage.
• Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
FailedState.IncludeFileInfo to optionally show/hide line numbers in exceptions in Failed state.BackgroundJob class always acquires the most current JobStorage.Current instance.RecurringJob class always acquires the most current JobStorage.Current instance.SqlServerStorageOptions.DisableTransactionScope option for .NET Framework targets.Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
Release notes are available in our blog https://www.hangfire.io/blog/ Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.
1.8.19 • Fixed – Sliding invisibility timeout isn't prolonged in lightweight servers, causing jobs to be restarted.
1.8.17
• Fixed – InvalidCastException while fetching a job with older schemas regression from 1.8.16.
1.8.16
• Changed – Use vanilla ADO.NET when fetching a job in the SqlServerJobQueue implementation.
• Fixed – SqlException: Must declare the scalar variable "@key" in delayed and recurring job schedulers.
• Fixed – Decrease the LockTimeout time when calling the sp_getapplock procedure to 1 second for less blocking.
• Project – Disable parallel tests execution when building under .NET 9.0.
• Project – Run tests over the latest Microsoft.Data.SqlClient package and the net6.0 platform.
• Project – Reduce execution time of integration tests.
• Project – Disable PoolBlockingPeriod setting on AppVeyor to handle transient test failures.
1.8.15
• Changed – Use query template caching based on schema name to avoid excessive string allocations.
• Changed – Use static callbacks almost anywhere to avoid unnecessary delegate allocations.
• Changed – Use QuerySingle* or ReadSingle* where possible to avoid allocating lists.
• Changed – Unify DbCommand and DbParameter creation logic to improve code consistency.
1.8.13 and 1.8.14 • Changed – Limit polling queries when queues are empty with a semaphore for all configurations. • Changed – Use per-queue signaling for same-process workers, instead of having a global signal. • Fixed – Don't silently truncate queue names, throw an exception instead. • Project – Decrease delays in SQL Server-related tests to complete them faster.
1.8.12
• Fixed – Populate InvocationData and LoadException properties in JobDetails method results.
1.8.10
• Changed – Bump Dapper for the netstandard2.0 platform to version 2.1.28.
• Changed – Bump Dapper for net451 and netstandard1.3 platforms to version 1.60.6.
• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add HangfireIO as a package owner.
1.8.9
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.
• Project – Run unit tests against the net6.0 platform.
1.8.7
• Changed – Avoid throwing an exception when a connection string has duplicate property names.
• Project – Disable tests for netcoreapp1.0 and netcoreapp2.1 targets since they aren't supported in AppVeyor.
• Project – Add a net6.0 target for unit tests instead of the removed ones.
• Project – Modernise projects and build environments to use the newest features.
1.8.6
• 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.
1.8.5
• Fixed – "Query processor could not produce a query plan" when removing expired counters in Schema 5.
1.8.2
• Fixed – InvalidOperationException with new dashboard metrics when a database has multiple data/log files.
1.8.1
• Fixed – Blocked workers regression since 1.7.33 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.
1.8.0
• 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.
• Added – Schema 8 migration with fixed JobQueue.Id column to use the bigint type.
• Added – Schema 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).
• 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 to TimeSpan.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 a 5-minute timeout.
• Changed – Use command batching by default with a 5-minute maximum timeout.
• Changed – Enable the UseRecommendedIsolationLevel option by default.
• Changed – GetJobData now populates the JobData.ParametersSnapshot property to avoid additional roundtrips.
• Changed – Display scheduled and processing jobs in ascending order in Dashboard UI.
• Changed – Implement the Transaction.AcquireDistributedLock feature.
• Changed – Implement the GetSetCount.Limited feature.
• Changed – Implement the GetSetContains feature.
• Changed – Bump the internal version of Dapper to 2.0.123.
• Changed – Enable common metrics for SQL Server storage to be shown by default.
• Changed – Enable the Monitoring.AwaitingJobs feature for SQL storage.
• Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
Release notes are available in our blog https://www.hangfire.io/blog/ Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.
1.8.19 • Fixed – Sliding invisibility timeout isn't prolonged in lightweight servers, causing jobs to be restarted.
1.8.17
• Fixed – InvalidCastException while fetching a job with older schemas regression from 1.8.16.
1.8.16
• Changed – Use vanilla ADO.NET when fetching a job in the SqlServerJobQueue implementation.
• Fixed – SqlException: Must declare the scalar variable "@key" in delayed and recurring job schedulers.
• Fixed – Decrease the LockTimeout time when calling the sp_getapplock procedure to 1 second for less blocking.
• Project – Disable parallel tests execution when building under .NET 9.0.
• Project – Run tests over the latest Microsoft.Data.SqlClient package and the net6.0 platform.
• Project – Reduce execution time of integration tests.
• Project – Disable PoolBlockingPeriod setting on AppVeyor to handle transient test failures.
1.8.15
• Changed – Use query template caching based on schema name to avoid excessive string allocations.
• Changed – Use static callbacks almost anywhere to avoid unnecessary delegate allocations.
• Changed – Use QuerySingle* or ReadSingle* where possible to avoid allocating lists.
• Changed – Unify DbCommand and DbParameter creation logic to improve code consistency.
1.8.13 and 1.8.14 • Changed – Limit polling queries when queues are empty with a semaphore for all configurations. • Changed – Use per-queue signaling for same-process workers, instead of having a global signal. • Fixed – Don't silently truncate queue names, throw an exception instead. • Project – Decrease delays in SQL Server-related tests to complete them faster.
1.8.12
• Fixed – Populate InvocationData and LoadException properties in JobDetails method results.
1.8.10
• Changed – Bump Dapper for the netstandard2.0 platform to version 2.1.28.
• Changed – Bump Dapper for net451 and netstandard1.3 platforms to version 1.60.6.
• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add HangfireIO as a package owner.
1.8.9
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.
• Project – Run unit tests against the net6.0 platform.
1.8.7
• Changed – Avoid throwing an exception when a connection string has duplicate property names.
• Project – Disable tests for netcoreapp1.0 and netcoreapp2.1 targets since they aren't supported in AppVeyor.
• Project – Add a net6.0 target for unit tests instead of the removed ones.
• Project – Modernise projects and build environments to use the newest features.
1.8.6
• 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.
1.8.5
• Fixed – "Query processor could not produce a query plan" when removing expired counters in Schema 5.
1.8.2
• Fixed – InvalidOperationException with new dashboard metrics when a database has multiple data/log files.
1.8.1
• Fixed – Blocked workers regression since 1.7.33 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.
1.8.0
• 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.
• Added – Schema 8 migration with fixed JobQueue.Id column to use the bigint type.
• Added – Schema 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).
• 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 to TimeSpan.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 a 5-minute timeout.
• Changed – Use command batching by default with a 5-minute maximum timeout.
• Changed – Enable the UseRecommendedIsolationLevel option by default.
• Changed – GetJobData now populates the JobData.ParametersSnapshot property to avoid additional roundtrips.
• Changed – Display scheduled and processing jobs in ascending order in Dashboard UI.
• Changed – Implement the Transaction.AcquireDistributedLock feature.
• Changed – Implement the GetSetCount.Limited feature.
• Changed – Implement the GetSetContains feature.
• Changed – Bump the internal version of Dapper to 2.0.123.
• Changed – Enable common metrics for SQL Server storage to be shown by default.
• Changed – Enable the Monitoring.AwaitingJobs feature for SQL storage.
• Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
Release notes are available in our blog https://www.hangfire.io/blog/ Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.
1.8.17
• Fixed – InvalidCastException while fetching a job with older schemas regression from 1.8.16.
1.8.16
• Changed – Use vanilla ADO.NET when fetching a job in the SqlServerJobQueue implementation.
• Fixed – SqlException: Must declare the scalar variable "@key" in delayed and recurring job schedulers.
• Fixed – Decrease the LockTimeout time when calling the sp_getapplock procedure to 1 second for less blocking.
• Project – Disable parallel tests execution when building under .NET 9.0.
• Project – Run tests over the latest Microsoft.Data.SqlClient package and the net6.0 platform.
• Project – Reduce execution time of integration tests.
• Project – Disable PoolBlockingPeriod setting on AppVeyor to handle transient test failures.
1.8.15
• Changed – Use query template caching based on schema name to avoid excessive string allocations.
• Changed – Use static callbacks almost anywhere to avoid unnecessary delegate allocations.
• Changed – Use QuerySingle* or ReadSingle* where possible to avoid allocating lists.
• Changed – Unify DbCommand and DbParameter creation logic to improve code consistency.
1.8.13 and 1.8.14 • Changed – Limit polling queries when queues are empty with a semaphore for all configurations. • Changed – Use per-queue signaling for same-process workers, instead of having a global signal. • Fixed – Don't silently truncate queue names, throw an exception instead. • Project – Decrease delays in SQL Server-related tests to complete them faster.
1.8.12
• Fixed – Populate InvocationData and LoadException properties in JobDetails method results.
1.8.10
• Changed – Bump Dapper for the netstandard2.0 platform to version 2.1.28.
• Changed – Bump Dapper for net451 and netstandard1.3 platforms to version 1.60.6.
• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add HangfireIO as a package owner.
1.8.9
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.
• Project – Run unit tests against the net6.0 platform.
1.8.7
• Changed – Avoid throwing an exception when a connection string has duplicate property names.
• Project – Disable tests for netcoreapp1.0 and netcoreapp2.1 targets since they aren't supported in AppVeyor.
• Project – Add a net6.0 target for unit tests instead of the removed ones.
• Project – Modernise projects and build environments to use the newest features.
1.8.6
• 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.
1.8.5
• Fixed – "Query processor could not produce a query plan" when removing expired counters in Schema 5.
1.8.2
• Fixed – InvalidOperationException with new dashboard metrics when a database has multiple data/log files.
1.8.1
• Fixed – Blocked workers regression since 1.7.33 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.
1.8.0
• 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.
• Added – Schema 8 migration with fixed JobQueue.Id column to use the bigint type.
• Added – Schema 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).
• 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 to TimeSpan.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 a 5-minute timeout.
• Changed – Use command batching by default with a 5-minute maximum timeout.
• Changed – Enable the UseRecommendedIsolationLevel option by default.
• Changed – GetJobData now populates the JobData.ParametersSnapshot property to avoid additional roundtrips.
• Changed – Display scheduled and processing jobs in ascending order in Dashboard UI.
• Changed – Implement the Transaction.AcquireDistributedLock feature.
• Changed – Implement the GetSetCount.Limited feature.
• Changed – Implement the GetSetContains feature.
• Changed – Bump the internal version of Dapper to 2.0.123.
• Changed – Enable common metrics for SQL Server storage to be shown by default.
• Changed – Enable the Monitoring.AwaitingJobs feature for SQL storage.
• Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
DashboardOptions.ServerPossiblyAbortedThreshold to configure a custom threshold for "possibly aborted" warnings.CultureInfo-related differences after upgrading to 1.8.15–1.8.17.AsyncLocal values from synchronous background job methods.Job.Args property to the Job class' constructor.cshtml files working on newer platforms.ObjectDisposedException in the StopAsync method.NullReferenceException when LocalIpAddress or RemoteIpAddress is null.Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
Release notes are available in our blog https://www.hangfire.io/blog/ Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.
1.8.17
• Fixed – InvalidCastException while fetching a job with older schemas regression from 1.8.16.
1.8.16
• Changed – Use vanilla ADO.NET when fetching a job in the SqlServerJobQueue implementation.
• Fixed – SqlException: Must declare the scalar variable "@key" in delayed and recurring job schedulers.
• Fixed – Decrease the LockTimeout time when calling the sp_getapplock procedure to 1 second for less blocking.
• Project – Disable parallel tests execution when building under .NET 9.0.
• Project – Run tests over the latest Microsoft.Data.SqlClient package and the net6.0 platform.
• Project – Reduce execution time of integration tests.
• Project – Disable PoolBlockingPeriod setting on AppVeyor to handle transient test failures.
1.8.15
• Changed – Use query template caching based on schema name to avoid excessive string allocations.
• Changed – Use static callbacks almost anywhere to avoid unnecessary delegate allocations.
• Changed – Use QuerySingle* or ReadSingle* where possible to avoid allocating lists.
• Changed – Unify DbCommand and DbParameter creation logic to improve code consistency.
1.8.13 and 1.8.14 • Changed – Limit polling queries when queues are empty with a semaphore for all configurations. • Changed – Use per-queue signaling for same-process workers, instead of having a global signal. • Fixed – Don't silently truncate queue names, throw an exception instead. • Project – Decrease delays in SQL Server-related tests to complete them faster.
1.8.12
• Fixed – Populate InvocationData and LoadException properties in JobDetails method results.
1.8.10
• Changed – Bump Dapper for the netstandard2.0 platform to version 2.1.28.
• Changed – Bump Dapper for net451 and netstandard1.3 platforms to version 1.60.6.
• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add HangfireIO as a package owner.
1.8.9
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.
• Project – Run unit tests against the net6.0 platform.
1.8.7
• Changed – Avoid throwing an exception when a connection string has duplicate property names.
• Project – Disable tests for netcoreapp1.0 and netcoreapp2.1 targets since they aren't supported in AppVeyor.
• Project – Add a net6.0 target for unit tests instead of the removed ones.
• Project – Modernise projects and build environments to use the newest features.
1.8.6
• 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.
1.8.5
• Fixed – "Query processor could not produce a query plan" when removing expired counters in Schema 5.
1.8.2
• Fixed – InvalidOperationException with new dashboard metrics when a database has multiple data/log files.
1.8.1
• Fixed – Blocked workers regression since 1.7.33 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.
1.8.0
• 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.
• Added – Schema 8 migration with fixed JobQueue.Id column to use the bigint type.
• Added – Schema 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).
• 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 to TimeSpan.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 a 5-minute timeout.
• Changed – Use command batching by default with a 5-minute maximum timeout.
• Changed – Enable the UseRecommendedIsolationLevel option by default.
• Changed – GetJobData now populates the JobData.ParametersSnapshot property to avoid additional roundtrips.
• Changed – Display scheduled and processing jobs in ascending order in Dashboard UI.
• Changed – Implement the Transaction.AcquireDistributedLock feature.
• Changed – Implement the GetSetCount.Limited feature.
• Changed – Implement the GetSetContains feature.
• Changed – Bump the internal version of Dapper to 2.0.123.
• Changed – Enable common metrics for SQL Server storage to be shown by default.
• Changed – Enable the Monitoring.AwaitingJobs feature for SQL storage.
• Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
InvalidCastException while fetching a job with older schemas regression from 1.8.16.Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
Release notes are available in our blog https://www.hangfire.io/blog/ Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.
1.8.16
• Changed – Use vanilla ADO.NET when fetching a job in the SqlServerJobQueue implementation.
• Fixed – SqlException: Must declare the scalar variable "@key" in delayed and recurring job schedulers.
• Fixed – Decrease the LockTimeout time when calling the sp_getapplock procedure to 1 second for less blocking.
• Project – Disable parallel tests execution when building under .NET 9.0.
• Project – Run tests over the latest Microsoft.Data.SqlClient package and the net6.0 platform.
• Project – Reduce execution time of integration tests.
• Project – Disable PoolBlockingPeriod setting on AppVeyor to handle transient test failures.
1.8.15
• Changed – Use query template caching based on schema name to avoid excessive string allocations.
• Changed – Use static callbacks almost anywhere to avoid unnecessary delegate allocations.
• Changed – Use QuerySingle* or ReadSingle* where possible to avoid allocating lists.
• Changed – Unify DbCommand and DbParameter creation logic to improve code consistency.
1.8.13 and 1.8.14 • Changed – Limit polling queries when queues are empty with a semaphore for all configurations. • Changed – Use per-queue signaling for same-process workers, instead of having a global signal. • Fixed – Don't silently truncate queue names, throw an exception instead. • Project – Decrease delays in SQL Server-related tests to complete them faster.
1.8.12
• Fixed – Populate InvocationData and LoadException properties in JobDetails method results.
1.8.10
• Changed – Bump Dapper for the netstandard2.0 platform to version 2.1.28.
• Changed – Bump Dapper for net451 and netstandard1.3 platforms to version 1.60.6.
• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add HangfireIO as a package owner.
1.8.9
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.
• Project – Run unit tests against the net6.0 platform.
1.8.7
• Changed – Avoid throwing an exception when a connection string has duplicate property names.
• Project – Disable tests for netcoreapp1.0 and netcoreapp2.1 targets since they aren't supported in AppVeyor.
• Project – Add a net6.0 target for unit tests instead of the removed ones.
• Project – Modernise projects and build environments to use the newest features.
1.8.6
• 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.
1.8.5
• Fixed – "Query processor could not produce a query plan" when removing expired counters in Schema 5.
1.8.2
• Fixed – InvalidOperationException with new dashboard metrics when a database has multiple data/log files.
1.8.1
• Fixed – Blocked workers regression since 1.7.33 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.
1.8.0
• 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.
• Added – Schema 8 migration with fixed JobQueue.Id column to use the bigint type.
• Added – Schema 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).
• 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 to TimeSpan.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 a 5-minute timeout.
• Changed – Use command batching by default with a 5-minute maximum timeout.
• Changed – Enable the UseRecommendedIsolationLevel option by default.
• Changed – GetJobData now populates the JobData.ParametersSnapshot property to avoid additional roundtrips.
• Changed – Display scheduled and processing jobs in ascending order in Dashboard UI.
• Changed – Implement the Transaction.AcquireDistributedLock feature.
• Changed – Implement the GetSetCount.Limited feature.
• Changed – Implement the GetSetContains feature.
• Changed – Bump the internal version of Dapper to 2.0.123.
• Changed – Enable common metrics for SQL Server storage to be shown by default.
• Changed – Enable the Monitoring.AwaitingJobs feature for SQL storage.
• Deprecated – UsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
IServerFilter implementations.ExceptionDetails property of a FailedState instance.CancellationEvent usage instead of CancellationToken.WaitHandle.BackgroundJobStateChanger implementation.net451 platform when using .NET 9.0.RecurringJobSchedulerFacts class.Microsoft.CodeAnalysis.NetAnalyzers package to version 9.0.0.SqlServerJobQueue implementation.LockTimeout time when calling the sp_getapplock procedure to 1 second for less blocking.net6.0 platform.PoolBlockingPeriod setting on AppVeyor to handle transient test failures.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →