We are leaving Russia. We are against aggression and war with Ukraine. It is a tragedy for our nations, it is a nightmare

rss feed Blog

Introducing Hangfire.Throttling

The new Hangfire.Throttling package released today. It contains different concurrency and rate limiters that will help to reduce the load on external resources like databases or third-party services. All of these limiters work without forcing workers to wait until a throttling condition is satisfied, by delaying or deleting a job, so all the workers are free to process other jobs.

Continue Reading →

Hangfire 1.7.5

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 IBackgroundJobClient and IRecurringJobManager instances that throw JobStorage.Current is null exceptions, and also adds the AddHangfireServer overload with options-based callback.

Continue Reading →

Hangfire.Pro 2.2.1

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 →

Hangfire 1.7.4

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 →

Hangfire.Pro 2.2.0

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 →