Patch release that fixes
InvalidOperationException from new SQL Server metrics and occasional “Can not start continuation” error when using Hangfire.InMemory or Hangfire.Pro.Redis storage.
Patch release that fixes
InvalidOperationException from new SQL Server metrics and occasional “Can not start continuation” error when using Hangfire.InMemory or Hangfire.Pro.Redis storage.
Correcting release that adds missing configuration methods, contains important fixes for the Hangfire.SqlServer storage and adds some tweaks for the Dashboard UI.Continue Reading →
Maintenance release that fixes possible blocked workers’ problems when using multiple servers in the same applications that listen to different queues with the Hangfire.SqlServer storage. This is a regression appeared in version 1.7.33 when client waiting was implemented.Continue Reading →
Accompanying the release of Hangfire 1.8.0, it supports all the new storage features, including first-class support for explicit queues for jobs, reduced number of network calls when creating or processing background jobs and Redis Server as a time authority for schedulers.Continue Reading →
Finally Hangfire 1.8.0 is here. The latest version offers a set of great new features like first-class queue support for background jobs, the enhanced role of the Deleted state that now supports exceptions, more options for continuations to implement even try/catch/finally semantics, better defaults to simplify the initial configuration and various Dashboard UI improvements like full-width and optional dark mode support.Continue Reading →
4th release candidate of the upcoming Hangfire is here. Version 1.8 offers a set of great new features like first-class queue support for background jobs, the enhanced role of the Deleted state that now supports exceptions, more options for continuations to implement even try/catch/finally semantics, better defaults to simplify the initial configuration and various Dashboard UI improvements like full-width and optional dark mode support.Continue Reading →
3rd release candidate of the upcoming Hangfire is here. Version 1.8 offers a set of great new features like first-class queue support for background jobs, the enhanced role of the Deleted state that now supports exceptions, more options for continuations to implement even try/catch/finally semantics, better defaults to simplify the initial configuration and various Dashboard UI improvements like full-width and optional dark mode support.Continue Reading →
Small maintenance release that adds reschedule overloads for
IBackgroundJobClient types and fixes tricky case with generics and inheritance when creating a background job.
Patch release that implements sliding invisibility-based fetch logic with waiting on client’s side instead of SQL Server’s one (so wait statistics will be clear now) and uses SQL Server as a time authority for server heartbeats (unsynchronized clock will not cause servers to suddently disappear). Also implemented
IAsyncDisposable support for service scopes in modern .NET Core applications.
This version has a compatibility patch for highly popular Hangfire.Console extension so it can’t slow down the background processing when CLR’s Thread Pool is starved.Continue Reading →
Maintenance release with added Swedish translation of the Dashboard UI and other minor tweaks.Continue Reading →
This patch version fixes possible “stuck batch” issue when state of a job inside a batch continuation is changed externally before that batch continuation is started. Such state transitions shouldn’t be used, because they violate encapsulation, but nevertheless while they aren’t prohibited by the code, we should handle such cases somehow.Continue Reading →
As with mutexes, it is now possible to apply a semaphore to the entire batch by using a special technique, please see the Throttling Batches section for details.Continue Reading →
This patch version contains improved logging for SSL/TLS authentication routine to understand what’s actually happened when something went wrong with the
DEBUG log level enabled for the
This release fixes
ArgumentException when accessing the Dashboard UI with Redis metrics enabled if Redis Server instance has multiple additional modules installed.
This patch release fixes a regression appeared in 2.8 version related to the LUA-based transaction implementation, which didn’t take StackExchange.Redis’s
ChannelPrefix option into account when enqueueing a background job id, causing the processing to hang when custom channel prefix is used.
This is a small maintenance release that just add missing overloads for the
ContinueBatchWith method that allows to use background jobs based on asynchronous methods as continuations for batches. But this will unfortunately work only for .NET Core platform. Unfortunately support for .NET Framework will come only with version 3.0, because breaking changes required in this case.
Maintenance release that adds
RecurringJob.TriggerJob method that returns identifier of a triggered background job, bumps Moment.js packages used by Dashboard UI to 2.29.4 and contains fixes for the
This version contains even better implementation of ASP.NET application shutdown detection logic – detection timer was replaced with a dedicated thread to make it work even when ASP.NET killed all the thread pool threads, and yet another check based on internal state was implemented for more reliable detection.Continue Reading →
This is a maintenance release that adds more protection to its internal components to prevent and diagnose high CPU consumption when something goes wrong with wait implementation. Uncatchable exceptions like
StackOverflowException are not not handled by Hangfire to avoid leaving the process in a inconsistent state. Finally command batching now works with Microsoft.Data.SqlClient package. Also some very minor features were added, please see the release notes for details.
This maintenance release fixes the order in which enqueued jobs are displayed on Queues and Enqueued Jobs pages in Dashboard UI or returned from
EnqueuedJobs methods from the Monitoring API component. Now jobs that will be dequeued first are displayed first as expected. Also decreased maximum number of commands per LUA command execution to 200K, others are moved to a subsequent command (previous value was 1M).
This release fixes a regression appeared in the previous version 2.8.14 when multiple jobs storages are used – background jobs started to be processed one by one in this case.Continue Reading →
This release fixes “too many results to unpack” regression appeared in 2.8.X when using batch continuations with a lot of background jobs.Continue Reading →
This release contains important fixes for SQL Server-based job storage to work better with sub-second polling (including
QueuePollingInterval) and properly send heartbeats for long-running jobs even if CLR’s Thread Pool is starved for long periods of time. It is also very likely that some problems related to high CPU usage and high number of fetching queries occurring after deploying new application version to IIS were also fixed (they are almost impossible to catch up, but same workaround already helped in the past).
Maintenance release that fixes fatal error in connection manager after long period of reconnects and “ConnectionMultiplexer is not a Sentinel connection” error when using Hangfire.Pro.Redis.SEv2 package and trying to reconnect to Sentinel nodes after a failure.Continue Reading →
This release fixed another problem which appear with large number of servers and relates to huge amount of “Removing server…” log messages after ungraceful shutdown. Now method which is responsible for removing inactive servers uses a distributed lock to avoid concurrency and produce less Redis commands and logs.Continue Reading →
The last preview version of the 1.8 release that adds support for dark mode for Dashboard UI (
This release reduces the network bandwidth consumption in environments with hundreds of servers and hundreds of queues. There were unnecessary calls to
SMEMBERS servers command in the
FetchedJobsWatcher component responsible for fault detection, leading to ServerCount*QueueCount number calls to it.
This is a maintenance release that adds Turkish language and fixes 85% and less zoom in Safari for the Dashboard UI, and contains some other minor fixes.Continue Reading →
This security patch fixes a regression appeared in the previous version 1.7.25 that makes Dashboard UI available for remote requests in the default configuration, e.g. when no authentication filter specified. Please note that when custom authentication filter is defined as recommended in the documentation, everything works as expected, but upgrade is recommended in any case. Please read the GHSA-7rq6-7gv8-c37h security advisory for details.Continue Reading →
Maintenance release that bumps dependencies in Dashboard UI to the latest patch versions, fixes exception when trying to add a continuation for an already expired job when using Hangfire.SqlServer and contains other minor tweaks.Continue Reading →
This beta finally adds the
Queue property directly to a job and adds all the required overloads to
RecurringJob classes and
IRecurringJobManager interfaces to specify queues dynamically at run-time and preserve them between retries. Dashboard UI is now implemented in full-width, so long method names are no longer a problem.
This is a maintenance release that adds support for async authorization filters via the new
DashboardOptions.AsyncAuthorization property, contains small improvements for the Dashboard UI and stops using
readcommittedlock table hint when not required in the Hangfire.SqlServer package.
This maintenance release forces Hangfire.Pro.Redis to always use dedicated threads for reading Redis responses, even on Windows where IOCP threads were used by default. This will help to avoid slowdowns and timeout exceptions when all IOCP threads are busy or blocked by user code. This change is made because System.Net.Http.HttpClient package began to leak IOCP threads to user code, starting from one of the recent versions.Continue Reading →
Maintenance release that resolves the
NotImplementedException exception in the
EnlishPromotableSinglePhase method when running on Mono, makes
IdempotentCompletionAttribute work regardless of the current serializer settings and also fixes some other minor issues.
It is now possible to add batch continuations with new
OnlyOnDeletedState options. The
BatchContinuationOptions enum now allows to specify multiple values, so it is possible to mix different options to create a continuation that fire in multiple cases. For example continuations with
OnlyOnSucceededState | OnlyOnCompletedState option specified will only be executed once antecedent batch is either succeeded or completed – but not deleted, e.g. canceled.
This maintenance release adds more logging only, but now almost every exception that occurs inside StackExchange.Redis package is logged with the
DEBUG log level. So internal errors can be tracked now much faster than before.
Maintenance release for 1.6.X branch with some fixes backported from recent 1.7.X versions, including a fix for possible connection leak in Hangfire.SqlServer when an exception is thrown while releasing a distributed lock.Continue Reading →
This is a maintenance release that increases reliability after failovers when using older Redis version with asynchronous replication enabled.Continue Reading →
Hangfire 1.8.0-beta2 and beta1 recently released. The new versions bring a lot of improvements to create more complex workflows with new continuation options, improve role of the
DeletedState that now has its own exception information and displayed on graphs when supported by an underlying storage, bring more methods for underlying abstractions to reduce the number of round-trips to a storage and other features as well. Also this version has better defaults for Hangfire.SqlServer package, and sliding invisibility timeout option will now be used by default.
This release fixes problems with missing performance counter instances in Performance Monitor due to changed instance naming rules in
Microsoft.Owin.* packages of version 3.X and the absence of instance name sanitization.
This release bumps package versions referenced by Dashboard UI and fixes a possible reason for non-disposed
SqlConnection instances in Hangfire.SqlServer storage when distributed lock release throws an exception (possible when using
DisableConcurrentExecution filter with long-running jobs).
This maintenance release adds Norwegian translation, fixes problem with changing time zone of a recurring job, contains improvements for .NET Core integration and fixes
Schema 6 migration (for those who didn’t apply it yet) that modifies the last
Id column that’s still based on
Int32 type, to use
General improvements for Hangfire.Pro.Redis with better error messages that contain actual problem (for example “No such host is known” instead of “SocketFailure on PING”), eliminated last bits of thread pool usage when using synchronous methods (so everything will be stable now when thread pool threads are busy) and other fixes.Continue Reading →
It is now possible to apply a mutex to the entire batch by using a special technique, please see the Throttling Batches section for details.Continue Reading →
This is a maintenance release that adds German localization for Dashboard UI (thanks @d-oit!), adds
IGlobalConfiguration.UseMaxArgumentSizeToRender extension method and fixes some minor issues. Dominik Oswald, Jurriaan Wijnberg and Jeremy Hayes, thanks for your help!
This is an important maintenance release that fixes regressions appeared in version 2.8.0. Please consider upgrading especially if you are using batches with 25,000 background jobs and more.Continue Reading →
RedisStorageOptions.MaxStateHistoryLength option is added in this release to limit the number of state history entries and avoid storage leak when some background job is rescheduled again and again. By default, only 10 state history entries are now persisted, but this value can be configured with the new option.
This release contains a new option
SqlServerStorageOptions.DeleteExpiredBatchSize to let expiration manager delete more expired records in a single pass when processing workload is large enough.
This version fixes regression appeared in 2.8.0 which leads to occasional
SemaphoreFullException exception when distribute lock can’t be obtained and timeout exception should be thrown instead. Also the
RelyOnInternalReconnects experimental option was added to test less aggressive reconnection logic built into SE.Redis package.
This maintenance release only fixes a regression appeared in Hangfire 1.7.15 when using SQL Server 2008 or SQL Server 2008 R2, related to changed queries for “upsert” operations.Continue Reading →
This release addresses a blocking issue appeared in version 1.7.9, where workers were unable to pick up new jobs when application is using multiple SQL Server storage instances in the same process with same queue names for each storage.Continue Reading →
This release fixes possibly hanging continuations for background jobs which belong to a canceled batch. Problem was caused by wrong execution order between
ContinuationsSupport filters, and the former now runs before the latter to give it a chance to recognize antecedent background job was deleted.
These are maintenance releases that fix blocking issues appeared in version 2.6.0 when using multiple
RedisStorage instances in the same process with the same queue names, avoid sharing the same semaphore for different storages when using distributed locks, add
RedisStorageOptions.UseLegacyTransactions option to avoid using LUA-based transactions and add experimental Hangfire.Pro.Redis.SEv2 package based on StackExchange.Redis 2.X.
This release adds the
IGlobalConfiguration.UseMaxLinesInExceptionDetails option to cap exception details when background jobs fail with an exception and forces only the first 100 lines of a stack trace to be persisted by default to avoid uncontrollable storage size growth. Also some improvements for SQL Server storage were added.
This version contains the most important changes for request/response processing pipeline since version 2.1 in terms of performance. LUA scripting feature is now used to implement transactions with proper locking, and it is much more efficient than the previous implementation based on conditional transactions. Less round-trips, reduced impact caused by latency, optimized distributed locks and better fetching from multiple queues makes this release so important, especially when using the package in a cloud environment.Continue Reading →
New version fixes a regression appeared in 1.7.13 which causes unexpected duplicate entries in the
JobParameters table when using SQL Server as a job storage with older schemas (V5 and below). This problem is caused by a changed query in the previous version, and that change is rolled back now. No other manual steps required to fix the issue.
New release brings support to detach background jobs from mutexes and semaphores without changing their state. New buttons added to the Dashboard UI, and new methods added to the
ThrottlingManager class (but not to the interface to avoid breaking changes) to support the new feature.
This version adds support for authenticating with username available in Redis 6 to use ACL support. Just add
user= option to your connection string, and you’ll be able to use the same Redis instance for multiple tenants with proper data isolation between them.
This version contains fixes for some corner cases in Hangfire.SqlServer, minor enhancements for Hangfire.Core and Catalan translation for Dashboard UI. Thank you Abraham Gausachs, Tomasz Malinowski and Will for your help with this release!Continue Reading →
The new pre-release version brings significantly improved command pipeline with less stalls due to the absence of conditional transactions (now using LUA scripting instead of them), less round-trips to Redis, decreased latency when obtaining distributed locks and optimized fetching from multiple queues using a single command. These changes heavily increase the throughput especially when using Redis in a cloud environment or using complex features in Hangfire.Continue Reading →
This is a maintenance release that fixes some connectivity problems that may occur in corner cases, such as cluster fail-over and connection timeouts.Continue Reading →
French translation added in this patch release (thank you @PaulARoy!), and now full absent type or method details will be shown in the Job Details page instead of the “Can not find the target method” error message. It turns out there was a simple and non-breaking implementation for this important improvement I could find for a long time. Some help from the storage is needed for this change to work, and Hangfire.SqlServer 1.7.12 and Hangfire.Pro.Redis 2.7.4 already provide it.Continue Reading →
This is a small feature release to add human-readable descriptions for throttlers. So we can specify descriptions when creating a throttler instead of having really long identifiers, and see them in Dashboard UI. Also some minor problems fixed in this release.Continue Reading →
This is yet another maintenance release that allows to turn off certificate revocation checks when using SSL/TLS.Continue Reading →
Maintenance update for Hangfire.Pro.Redis package that comes with some fixes, including
NullReferenceException in “Processing Jobs” page and possible client timeouts during peak loads when working with Redis Cluster.
This version brings a new method of parsing responses from Redis in .NET Core that works well even if CLR’s thread pool is starved. Dedicated reader threads now used for this purpose when running on Linux or macOS, but on Windows thread pool’s I/O threads now used instead to avoid spawning additional threads, since I/O threads work fine there. So upgrades are great for all of the operating systems.Continue Reading →
These versions contain important fixes for the whole processing pipeline, including fire-and-forget, delayed and recurring jobs in the presence of custom extension filters that can throw exceptions. Also a built-in support for reliable shutdown detection of ASP.NET applications was added to the Hangfire.Core package to prevent running old code base when the new one is already deployed. And recurring jobs page in 1.7.11 now displays all the exceptions that prevent a particular recurring job from being scheduled.Continue Reading →
This is a maintenance release that fixes serialization exception when trying to create a job continuation for batch in a batch continuation, disallows caching “JobStorage.Current is null” exceptions and let us to configure maximum number of entries for final batch state lists.Continue Reading →
This release is unrelated to the previous ones and fixes wrong behavior when non-recommended max-memory policy is used in Redis, such as
volatile-* one. I still don’t recommend to use other than
noeviction policies, but at least the following case is handled better.
The new version brings a lot of improvements to the internal implementation of Hangfire.Pro.Redis itself and its underlying Redis client – ability to use multiple connections within the same storage, improved request/response processing pipeline, TLS 1.2 enabled by default for encrypted connections and other improvements and fixes.Continue Reading →
The new version contains authorization filters based on the non-obsolete
IDashboardAuthorizationFilter interface appeared in Hangfire 1.6.0 (so it doesn’t work on previous versions), adds support for custom crypto-providers for Basic Authentication and fixes issues with wrong
These versions contain important fixes for Redis-based job storage implementation, including better handling of fail-over events in clustered environments, reduced number of timeout exceptions and better reliability for distributed locks.Continue Reading →
New version contains important changes for Hangfire.SqlServer package, fixing a possible
DbConnection leak after a database was taken offline and reducing the database load when sub-second polling interval is used. There are also some minor improvements for the Dashboard UI.
This version contains improvements for recurring jobs, support for Microsoft.Data.SqlClient package, experimental ability to use background job results in continuations (after calling the IGlobalConfiguration.UseResultsInContinuations extension method), even better integration with .NET Core 3.0 and bunch of other fixes.Continue Reading →
This is a maintenance release that contains useful enhancements for Dashboard UI, support for command batching even in .NET Core when using System.Data.SqlClient 4.7.0 and higher,
support for the Microsoft.Data.SqlClient package in Hangfire.SqlServer (postponed to 1.7.8) and other minor changes.
This is yet another maintenance release with added support for dashes in queue names (thanks, @augustoproiete), better recurring job error messages in Dashboard UI and some other useful fixes.Continue Reading →
This is a maintenance release that provides better handling of recurring job scheduling errors, clearly shows when there are problems with fetching statistics in Dashboard UI (thanks, @prochnowc!), doesn’t infinitely caches
IRecurringJobManager instances that throw JobStorage.Current is null exceptions, and also adds the
AddHangfireServer overload with options-based callback.
This release fixes occasional timeout exceptions that occur when attaching nested batch continuations for nested batches that are currently processed. The exception occurred due to a deadlock caused by different batch lock acquisition order when nested batches are involved.Continue Reading →
This is a maintenance release that contains important fixes for the Hangfire.SqlServer package to avoid deadlocks if you have long-running jobs, improvements for background process dispatch loop’s implementation, and also an interesting experimental feature that can transparently make background job creation resilient to transient exceptions by using idempotent retries.Continue Reading →
This is a maintenance release that plays better with recently released Hangfire 1.7, so you don’t get extra framework packages when targeting .NET Core or .NET Standard 2.0. Also, continuation filters now don’t throw an exception again and again, when continuation has already expired.Continue Reading →
This version contains security fixes to prevent possible XSS attacks as described in #1441. They don’t relate to user data submitted to Hangfire directly via method arguments, but it’s recommended to upgrade anyway. If you are using Hangfire 1.6, please upgrade to version 1.6.26 instead.Continue Reading →
This patch release contains stability improvements for recurring jobs, better handling of custom time zone resolvers in Dashboard UI and other minor fixes. If you are upgrading from 1.6.X, please see Upgrading to Hangfire 1.7 article to learn the details.Continue Reading →
This version brings support for Mono on Linux and macOS platforms without the need to reference additional packages. On Windows, both .NET Framework and .NET Standard 2.0 now use the same methods for polling a socket for new data, to make the behavior consistent across platforms.Continue Reading →
This is a patch release that adds some nice features for Dashboard UI, knows how to deal with recurring jobs with invalid Cron expressions, and contains some minor improvements for SQL Server storage. Also,
Hangfire.NetCore package was added to support new .NET Core Worker Service applications without referencing any ASP.NET Core packages.
Hangfire 1.7.0 is finally released with the whole bunch of new features and improvements for background processing, background and recurring jobs, SQL Server storage, .NET Core integration and interoperability between .NET platforms to provide a strong foundation for future features and extensions.Continue Reading →
This is a release candidate for the upcoming version 1.7.0 with a lot of new features and improvements for almost all the aspects of background job processing. Below you’ll find a short list of them as well as upgrade details, and more information will be published later. Please note this is a pre-release, and it’s not suitable for critical environments.Continue Reading →
This version fixes some issues and acts as an optional trampoline to the upcoming 1.7.0 release to simplify the rolling upgrades. So your current servers will work side-by-side with the newer ones even if you are using SQL Server as a job storage and applied the new migration. There will be more information on upgrading, but this version is nice-to-have (but not required) anyway.Continue Reading →
This is an important release that makes timeout detection much more robust. First of all, Redis server itself now acts as a single time authority for performing timeout checks for both jobs and servers rather than UTC time of a current Hangfire Server. So you don’t need to use synchronized clocks to prevent false positives for timeout checks.Continue Reading →
This version finally fixes interoperability issues that arise, because primitive built-in types like
String reside in assemblies with different name in .NET Core (
System.Private.CoreLib.dll) and .NET Framework (
mscorlib.dll). This led to
JobLoadException in .NET Framework-based applications, when they tried to perform background jobs created by a .NET Core-based one. The new version solves this problem by re-writing assembly name when resolving a type for a job and its parameters.
This release fixes unexpected behaviors when we are cancelling a batch that has continuations for its inner items as in the following sample. When those continuations have continuations themselves, or when we attaching a job with continuation to a cancelled batch, our leaf-level continuations stuck in the awaiting or non-initialized state until queued manually.Continue Reading →
This are late release notes for a maintenance release with minor fixes. Please see the list of fixed issues below and upgrade if necessary.Continue Reading →
The goal of this release is to resolve the timeout issues that appear in .NET Core 2.X applications. Such behavior was caused by networking implementation of SE.Redis, which posted Redis response processing logic to thread pool’s worker threads, instead of completion ports or custom threads, due to the lack of the corresponding API in
This release contains fixes for security issues related to dashboard, so it is highly recommended to upgrade. Cross-Site Request Forgery protection was added by using existing libraries, but methods are different across application frameworks:Continue Reading →
This maintenance release fixes race condition in the
UseBatches method that can lead to the
InvalidOperationException with “Batches are not initialized” message.
This release fixes a regression appeared in 1.6.18 as well as contain some improvements for the Hangfire.SqlServer package.Continue Reading →
This release contains a lot of fixes, but the most important ones are related to .NET Core and ASP.NET Core frameworks. Filters based on attributes are now working fine there, and
DisplayName decoration will finally bring the human-ready name for your jobs. Other fixes are mostly related to dashboard.
This release solves connectivity issues with Redis Cluster 4.X, appeared as a result of breaking changes introduced in Redis 4.0.Continue Reading →
This release contains important improvements when SQL Server is used as a job storage. Distributed locks are much more robust now even when there are significant connectivity issues (like those sometimes happen in Azure or other cloud environments) and require much fewer connections to SQL Server. Another improvement is related to a new option that allows transactions to be committed with fewer round-trips.Continue Reading →
This is yet another maintenance release that fixes a bunch of non-critical bugs in
This release brings full support for continuations in batches, including the nested ones. Now you can create continuations within a batch even for jobs or batches in nested batches. Consider the following sample:Continue Reading →
This release contains important fixes for the Hangfire.SqlServer package, which is actively using the
sp_getapplock stored procedure to synchronize work between different servers. I’ve realized that locks shouldn’t be awaited on SQL Server’s side, because this may lead to SQL Server’s connection pool starvation, because each blocked request will block a single worker thread.
This versions adds possibility to use non-transactional message fetching algorithm when using Hangfire.SqlServer package. This is especially helpful, if you have a lot of long-running background jobs, since they may prevent you from taking transaction log backups, leading to the Transaction log is full due to ‘ACTIVE_TRANSACTION’ error.Continue Reading →
This release contains a bunch of fixes for core and integration packages. The most important updates are fix for SQL connection leaks when we failed to acquire a distributed lock, and wrong queue selection, when continuation is created after antecedent job is finished. So upgrade is recommended.Continue Reading →
This is a minor update that fixes VS Code debugger crash on OS X, and don’t report
fatal. You can update only if these issues annoys you.
Another bug related to forever incomplete batches has been fixed. This bug existed for a long time, so I’d recommend anyone to upgrade.Continue Reading →
This release contains the most amazing update to the batches feature. Now you can create nested batches, attach jobs or batches to an existing batch, regardless of its current state, and lazily cancel running batches. Also, you can create job continuation for batch, and batch continuation for job. These feature allows you to build powerful workflows on top of Hangfire with ease.Continue Reading →
Redis Cluster is finally supported. Also improved connection resilience using custom connection loop, upgraded StackExchange.Redis to the latest version and fixed some nasty bugs. So I’d recommend to upgrade, especially if you are using Redis in cloud environments.Continue Reading →
There was a lack of distributed lock during the batch creation phase. If an antecedent batch succeeded just after adding a batch continuation (continuations:finished set), but before the continuation was created, antecedent batch was silently ignoring the fact that continuation does not exist yet. I’ve added a required distributed lock, and taught a state filter related to continuations to throw an exception, when continuation doesn’t exist.Continue Reading →
Finally Redis Cluster is officially supported by Hangfire.Pro.Redis package, and correctly handles the corner cases of Redis’ async replication. I was able to implement it without requiring RedLock algorithm, regular
WATCH commands are used to ensure distributed lock correctness.
This is a correcting release that mainly fixes regression related to dashboard, appeared in the previous version.Continue Reading →
A recommended upgrade for all users to improve the reliability and accuracy of the service bus integration:Continue Reading →
This release brings better exception handling policy for state changing pipeline. Previously, non-transient exception in a state filter could cause a worker to perform retries for affected background job infinitely. And a large number of such background jobs could stall the processing.Continue Reading →
This release fixes a problem with CSS and JS files in dashboard appeared in 1.6.10, as well as corrects the authorization behavior, when the
User property is
This is a maintenance release that contains fixes for job continuations and some dashboard issues related to Content Security Policy and recurring jobs page. It’s highly recommended to upgrade to prevent problems with continuations. They are rare, but lead to significant headache.Continue Reading →
I’m very excited to write about all of these changes, because they take batches and Hangfire itself to a whole new level by unlocking a lot of usage scenarios. This pre-release adds support for nested batches, modifications of existing batches, batch continuations for jobs and vice versa, batch cancellation as well as support for .NET Standard and configurable batch expiration time.Continue Reading →
This is a small correcting release that make it possible to have a workaround for
TimeoutException exceptions when using SQL Server with huge arguments or batches. The
SqlServerOptions.CommandTimeout option was added to allow to override the default timeout of 30 seconds.
This release contains a bunch of fixes for batches, and is recommended for anyone who use them. Batches now always created in a correct state (Started, Completed or Succeeded), depending of state of its jobs. This is the most important change that fixes weird problems with batches that hanging forever.Continue Reading →
This release contains a bunch of minor fixes, mostly for Dashboard UI.Continue Reading →
This is a correcting release that fixes
Server.StartedAt field reset problem during each server heartbeat, which lead to confusion that servers are constantly restarted, when watching the Servers page. It also adds missing
GetValueFromHash method required by popular Hangfire.Console extension.
This is a maintenance release that add support for Hangfire.Core 1.4.0 for conservative users who are planning to switch to use a more stable StackExchange.Redis client package, but don’t want to upgrade Hangfire.Core. Originally this package supported only ≥ 1.5.0 versions.Continue Reading →
This is a correcting release that brings fixes to fully support generic methods, whose generic arguments are defined in their parameters, including
T. A lot of issues with Dashboard UI that cause exceptions and other errors, like uncontrolled growth of event listeners on resize, were also fixed. Please see the full delails below.
This is a maintenance release that fixes
ArgumentNullException that appears in Dashboard UI and during a call to the
RedisMonitoringApi.Servers method, when
BackgroundJobServer instance was resurrected. Resurrection happens when a server was removed from active servers list due to network problems, but then appeared again.
This release adds an option that explicitly allows using multiple endpoints in the connection string, but it’s not recommended. Use it at your own risk! Here’s a small explanation:Continue Reading →
This is a correcting release that fixes a regression, when using generic methods of a scoped variable in expression for background jobs, as well as some minor optimizations for SQL Server. It also adds CLS compliance for basic packages, since public API is already compliant. Boring release, nothing interesting here.Continue Reading →
This release brings us a single package that targets both .NET Framework and .NET Core, so there’s no need to use separate packages now. It also fixes a rare issue, when a timed out background job stays in the
processing set indefinitely, causing dashboard exceptions.
This correcting release contains a lot of stability improvements for Hangfire.SqlServer, especially for SQL Azure Database environments. Processing is now more predictable even in Basic pricing tier, there is a special harness application that’s running 24/7 to ensure everything is fine. Some problems related to I18N, authorisation and continuations were also fixed.Continue Reading →
This release fixes a problem that caused
SqlConnection instance to leak when nested distributed locks are acquired for the same resource. If you are using batches, or continuations, and SQL Server as a storage, it is highly recommended to upgrade to prevent connection pool starvation and timeout exceptions.
This is a maintenance release that contains fixes for several bugs. It is highly recommended to upgrade to this version, if you are using
Hangfire.SqlServer. Thanks to all folks who helped with reporting and investigating these issues!
Brand new version of Hangfire.Pro.Redis is finally available. It is now based on feature-rich StackExchange.Redis library, allowing us to bring Hangfire to more environments that use Redis storage in the near future. This version comes with some new features, including SSL support and highly reduced connection usage.Continue Reading →
This version fixes different problems, that caused batches and batch continuations appear with no background jobs under rare circumstances. Also, background jobs now have the same expiration time with the batch itself. It is highly recommended to upgrade, if you are using batches.Continue Reading →
This correcting release contains important fixes for SQL Server and MSMQ integrations, as well as some cosmetic changes to the Dashboard UI. Major blocking problem was resolved, when using Hangfire with SQL Server, that may cause a lot of blocking records in the
State table, preventing background processing from working flawlessly, when expired records are removed from a database – Database Engine didn’t use the right index during the query performance.
This is a correcting release that fixes a couple of problems, including exception when using Serilog (appeared in 1.6.0), wrong CRON format strings for intervals, and ones that relate to the .NET Core platform. They were revealed by adding support to continuously run unit tests on Windows, Linux and OS X for the .NET Core using AppVeyor and Travis CI.Continue Reading →
Hangfire 1.6 just released with experimental .NET Core platform support, deep integration with ASP.NET Core and
await programming model support. Start processing background jobs with ease even on Linux and OS X today!
This release contains major bug fixes, and is very recommended to upgrade. In short,
OperationCanceledException doesn’t cause background processing to stop now. Dashboard UI doesn’t leak
READ UNCOMMITTED isolation level, and
READ_COMMITTED_SNAPSHOT option doesn’t lead background jobs to stuck in Enqueued state.
This release fixes a bug appeared in version 1.5.6 of the
Hangfire.SqlServer package. There was a race condition between the
Worker threads, that causes the following problems, especially when small background jobs are processed.
Third beta of the upcoming 1.6 release. Contains a fix for a bug introduced in the previous beta, related to inability to add custom filters, as well as fixes from the recent 1.5.7 version.Continue Reading →
This is a correcting release that contains a fix for Dashboard UI crashes when using MSMQ (finally, thanks @yangman for this!), as well as some other minor fixes.Continue Reading →
New major version of Hangfire.Pro.Redis package (a part of Hangfire Pro) is almost here. Now it uses popular open-source library StackExchange.Redis to interact with Redis – a blazing fast data structure store.Continue Reading →
This release fixes distributed locks in
Hangfire.Pro.Redis that didn’t take the Prefix option into account. This may result in problems and different timeout when a single Redis instance is used for a bunch of applications with separate code base.
This is the second beta of upcoming the 1.6 release. It contains some new features, but most importantly, it incorporates bug fixes released with recent 1.5.5 and 1.5.6 versions related to SQL Azure and recurring jobs, please see them for more details.Continue Reading →
This release fixes an issue related to SQL Azure and background jobs, running more than 30 minutes. The problem is caused by Azure Database Engine which closes idle connections after 30 minutes of inactivity. Hangfire now periodically sends “keep-alive” queries to prevent this.Continue Reading →
This is a correcting release that fixes a problem with recurring jobs. It is related to a possible misfire on a first run, if a background processing server was inactive during the scheduled time.Continue Reading →
This is the first beta of an upcoming 1.6 release. Added support for async background job methods, ability to access context when creating an IoC container scope, dashboard with i18n support, redesigned Job Details page and zero latency for simple setup with SQL Server.Continue Reading →
This is a correcting release that is highly recommended to install. It fixes issue related to daylight savings in recurring jobs, and prevents infinite loop when changing state of a background job that doesn’t exists (for example, when deleting a job).Continue Reading →
This release fixes an issue with batch continuations, and is recommended for anyone who use them. The issue takes place, when a parent batch unable to complete within 1 hour, after which batch continuation may start with no jobs, because all of them were expired.Continue Reading →
This release fixes
Could not find type Hangfire.Batches.States.BatchAwaitingState exception appeared after upgrading from Hangfire Pro 1.4.0 or 1.4.1 when using batch continuations. Previous release solved the issue partly, and didn’t cover those who just updated from versions listed above.
This is a recommended update for all users of Hangfire.SqlServer. It addresses to fix a bug presented in version 1.5.0, associated with incorrect acquiring/releasing of distributed locks after network problems, that may lead to Cannot release the application lock exceptions and other issues related to synchronization.Continue Reading →
This release fixes a security issue that caused Redis password leaks to log targets during the Hangfire Server startup. The password was also shown in dashboard. If you are using password-protected Redis, it is highly recommended to update to this release, and change Redis password.Continue Reading →
This is a hotfix for Hangfire 1.5.1 users. If you are using one of previous versions, you are unaffected by this bug.Continue Reading →
This is a correcting release that fixes some non-critical bugs.Continue Reading →
New versions of Hangfire Pro packages released to be compatible with Hangfire 1.5.0 version. Background jobs in batches now performing slightly faster, and Redis transaction scope was reduced to the
Commit method, allowing to query for data from apply state filters.
Finally after 4 months of development and after 4 betas, Hangfire 1.5.0 released. Now you are able to customize your background processing pipeline even more, by using many types that were internal in previous versions. More responsive dashboard, IoC container scopes, support for remote MSMQ queues and other cool features are waiting for you!Continue Reading →
This is a correcting release that fixes problems with
TaskCanceledException thrown by a job method as well as issue with MSMQ extension, when background jobs are created within a
Version 1.5.0 will open many types that were internal in previous versions of Hangfire, like
IBackgroundFactory, to enable you to have completely custom background processing. This release simplifies the usage of these types, of course only to decrease the amount of questions on forums .
This is a maintenance release that fixes deadlocks in expiration manager, SQL command timeouts in distributed locks (and in the DisableConcurrentExecution filter) and correctly handles poison messages in a schedule.Continue Reading →
This is a correcting release that fixes a race condition related to batch continuations and slightly improves performance of a batch job processing, especially when using SQL Server. It is strongly recommended to upgrade.Continue Reading →
This is a pre-release version that adds a lot of great new features for Hangfire requested by you, including background processes, built-in support for custom scopes in IoC containers, queues for recurring jobs and much more!Continue Reading →
This is a correcring release that fixes NotSupportException: This stream does not support seek operations bug added in 1.4.4. This exception is raised on all unbuffered HTTP POST requests to the Dashboard.Continue Reading →
This is a correcting release that contain some fixes for the Dashboard UI:Continue Reading →
This release makes some hard-coded values (like maximum succeeded job list length) configurable through the
RedisStorageOptions class. It also helps to re-queue aborted background jobs earlier – instead of waiting for invisibility timeout after non-graceful shutdown, we are re-queueing aborted background jobs right after its server becomes inactive.
This is a correcting release that allows Hangfire to work with databases with case-sensitive and binary collations and fixes some other problems. Integration tests now are running against a case-sensitive database to reduce the probability of a mistake.Continue Reading →
This is a correcting release that fixes job prioritization via queue ordering in an instance of the
BackgroundJobServerOptions class and adds support for symbol packages.
This is a correcting release that contains some bug fixes.Continue Reading →
After a long development, batches and batch continuations are completed, and I’m glad to introduce these features. It was a real challenge for me and for Hangfire to implement these features as a regular extension. If you don’t share my joy (Batches? Why I need them?), I’ll show you why they are so important.Continue Reading →
About 4 months passed since release of version 1.3, and I’m pleased to introduce the next major release – Hangfire 1.4 with a lot of new features added and a lot of stability improvements made. This is the most important upgrade since version 1.0.Continue Reading →
This is a pre-release version of Hangfire 1.4.0 that is considered to be stable (and it is more stable than 1.3.x). Final version will be released after documentation changes (some awesome features added, please see 1.4.0-beta1).Continue Reading →
This is a pre-release version of Hangfire 1.4.0 that is considered to be stable.Continue Reading →
This pre-release contains a lot of new features of an upcoming Hangfire 1.4.0 – continuations, time zone support for recurring jobs, new dashboard ui, new configuration classes.Continue Reading →
This is a correcting release that fixes hourly/weekly statistics display in Dashboard, and a rare issue when we trying to cancel a recurring job from a client filter.Continue Reading →
This is a correcting release. Fixed a bug related to MSMQ or RabbitMQ extensions, when enqueued job is not processed and “stuck” in the Enqueued state indefinitely until we retry it manually.Continue Reading →
This is a correcting release. Expiration manager does not attempt to remove all the records at once now. Instead, it removes them by 1000 at a time, so you won’t experience timeout exceptions anymore. If you had problems with recurring jobs, they were fixed also.Continue Reading →
Hangfire has finally reached the
1.0 milestone! This means that public API is frozen and considered to be stable. Starting from now, the SemVer 2.0 specification will be used for versioning every package (but there may be exceptions, follow the README for each package).
Note. The following information may be outdated after 1.0 release. Please see the official documentation first.Continue Reading →
Today I’ve pushed the next version of Hangfire project that allows to process background jobs inside ASP.NET applications in a reliable way.Continue Reading →