Skip to content

Releases: HangfireIO/Hangfire

1.8.0-rc3

30 Mar 04:59
v1.8.0-rc3
56a99ae
Compare
Choose a tag to compare
1.8.0-rc3 Pre-release
Pre-release

Release Notes

Please see release notes in our blog – https://www.hangfire.io/blog/2023/03/30/hangfire-1.8.0-rc3.html.

Hangfire.Core

  • Added – Introduce the captureDefault parameter in the CaptureCulture filter.
  • Added – Built-in awaiting metric through the StatisticsDto.Awaiting for monitoring stats.
  • AddedJobStorageFeatures class to avoid using magic strings in storage features.
  • Added – Create job atomically when corresponding storage feature supported.
  • Added – Support for new MonitoringApi methods for the Awaiting Jobs page.
  • Changed – Rely on captureDefault when dealing with default cultures instead of compatibility level.
  • Changed – Rename in a non-breaking way SetContains to GetSetContains for consistency.
  • Changed – Rely on storage indexing with Monitoring.AwaitingJobs feature.
  • Changed – Rename the BatchedGetFirstByLowest feature.
  • Changed – Throw more descriptive NotSupportedException from new storage methods
  • Changed – Make new methods in JobStorageMonitor virtual, not abstract.
  • Changed – Change GetSetCount with multiple keys in a non-breaking way.
  • Fixed – Throw an exception early when Job.Queue feature not supported.
  • Fixed – Don't show assembly details in deleted state renderer.
  • Rollback – Use the AttemptsExceededAction.Delete option by default in the global automatic retry filter.

Hangfire.SqlServer

  • Changed – Enable the Monitoring.AwaitingJobs feature for SQL storage.
  • Changed – Implement the Transaction.AcquireDistributedLock feature.
  • Changed – Implement the GetSetCount.Limited feature.
  • Changed – Implement the GetSetContains feature.
  • Fixed – Detect schema-related options after migration, not before, to get the actual schema version.

1.7.34

30 Mar 04:28
v1.7.34
4f3c023
Compare
Choose a tag to compare

Release Notes

Hangfire.Core

  • Added – Add reschedule functionality to BackgroundJob and IBackgroundJobClient (by @chrischu).
  • FixedArgumentNullException with tricky generic type with inheritance case for jobs.
  • Fixed – Display "Aborted servers will be removed…" note only once aborted threshold passed.

1.7.33

31 Jan 05:41
Compare
Choose a tag to compare

Release Notes

Hangfire.SqlServer

  • Changed – Use SQL Server as a time authority for server heartbeats.
  • Changed – Increase MinPollingDelayMs for SQL Server to 100 milliseconds.
  • Changed – Don't wait on SQL Server's side when using long polling for fetching.

Hangfire.AspNetCore

  • Fixed – Implement support IAsyncDisposable for IServiceScope instances for newer .NET platforms.

1.8.0-rc2

23 Nov 11:38
Compare
Choose a tag to compare
1.8.0-rc2 Pre-release
Pre-release

Release Notes

Hangfire.Core

  • Added – Support for default culture and UI culture via the UseDefaultCulture configuration method.
  • AddedCompatibilityLevel.Version_180 flag to avoid storing culture parameters when they are the same as default.
  • AddedBackgroundJobServerOptions.IsLightweightServer option to run server with no storage processes.
  • Changed – Use UI culture from CurrentCulture parameter when CurrentUICulture one is missing.

Hangfire.SqlServer

  • Breaking – Prioritise Microsoft.Data.SqlClient package over System.Data.SqlClient one.
  • Changed – Bump internal version of Dapper to 2.0.123.
  • Changed – Remove System.Data.SqlClient package from the NuGet dependency graph (by @0xced).

Hangfire.NetCore

  • Addednet451 and netstandard1.3 targets for the package.
  • Changed – Use netstandard2.1 target instead of netcoreapp3.0 for the package.

Hangfire.AspNetCore

  • Breaking – Make the package to be dependent on Hangfire.NetCore to use the same types.

1.7.32

21 Nov 09:22
Compare
Choose a tag to compare

Release Notes

Hangfire.Core

  • Added – First version of Swedish translation of the Dashboard UI (by @karl-sjogren).
  • Changed – More detailed message for exception when JobStorage.Current is not initialized.
  • Changed – Make TypeHelperSerializationBinder class public to use it from custom serializer settings.
  • Fixed – Small typos in French resources for the Dashboard UI (by @agriffard).
  • Fixed – Document the exception for the IJobCancellationToken interface method (by @judah4).

Hangfire.NetCore and Hangfire.AspNetCore

  • Changed – Wait for application to be ready before starting the server when using AddHangfireServer.
  • Fixed – Do not return null as result of StopAsync in hosted service implementation (by @tomaszek92).

1.7.31

19 Aug 07:08
Compare
Choose a tag to compare

Release Notes

Hangfire.Core

  • AddedRecurringJob.TriggerJob method that returns identifier of a triggered background job.
  • AddedRecurringJobManager.TriggerJob as a replacement for the TriggerExecution method.
  • Changed – Update Moment.js library used by Dashboard UI to version 2.29.4 (by @mmitchell-w).
  • Fixed – Typos in pt-BR translation (by @gumbarros and @marcelcamargo).
  • Fixed – Added missing parameter annotations for methods of the RecurringJob class.
  • DeprecatedRecurringJob.Trigger method is now obsolete, TriggerJob is the replacement.
  • DeprecatedRecurringJobManager.TriggerExecution method is now obsolete, TriggerJob should be used instead.

New Contributors

Full Changelog: v1.7.30...v1.7.31

1.8.0-rc1

13 Jun 12:43
Compare
Choose a tag to compare
1.8.0-rc1 Pre-release
Pre-release

Release Notes

Hangfire.Core

  • Added – Introduce the Job.Queue property, so jobs now can have their own queue specified.
  • Added – Method overloads to create background jobs directly with a custom default queue.
  • Added – Method overloads to create recurring jobs directly with a custom default queue.
  • AddedIBackgroundJobClient.Create method overloads with the new queue parameter.
  • AddedJobContinuationOptions.OnlyOnDeletedState to create continuations after a failure.
  • Added – Make it possible to specify multiple JobContinuationOptions values for a continuation.
  • Added – Ability to use custom formattable resource identifiers for the DisableConcurrentExecution filter.
  • Added – Pass ServerId to FailedState instances to simplify the debugging on different servers.
  • Added – Allow to pass job parameters when creating a job (by @brian-knoll-micronetonline).
  • AddedMisfireHandlingMode.Strict to create job for each missed recurring job occurrence.
  • AddedDeletedState now have the persisted Exception property populated after a failure.
  • AddedException job parameter is passed to continuation when UseResultsInContinuations method is used.
  • AddedFromExceptionAttribute to deal with an antecedent exception in a background job continuation.
  • Added – Allow to filter exception types in AutomaticRetryAttribute by using the new OnlyOn property.
  • Added – Built-in Remove method for JobFilterCollection to remove global filters based on their type.
  • AddedIGlobalConfiguration.UseFilterProvider extension method to unify the configuration.
  • Changed – Use the AttemptsExceededAction.Delete option by default in the global automatic retry filter.
  • Changed – Query time from storage in recurring and delayed schedulers when supported by storage.
  • Changed – Increase the default value for the BackgroundJobServerOptions.StopTimeout to 500 ms.
  • Changed – Speedup delayed jobs when custom default queue is specified by avoiding extra state transition.
  • Changed – Move job to the DeletedState instead of SucceededState when its invocation was canceled by a filter.
  • DeprecatedAddOrUpdate overloads with optional params defined in the RecurringJobManagerExtensions class.
  • DeprecatedAddOrUpdate overloads with optional parameters defined in the RecurringJob class.
  • DeprecatedAddOrUpdate method overloads with no recurringJobId parameter.
  • DeprecatedRecurringJobOptions.QueueName property, new methods should be used instead.
  • Breaking – Dropped NET45 platform target in favor of NET451 target to support Visual Studio 2022.

Dashboard UI

  • Added – Dark mode support for Dashboard UI configurable with the UseDarkModeSupportForDashboard method (by @danillewin).
  • Added – Dashboard UI now have full-width layout to display more data (by @danillewin).
  • Added – Allow to add custom JavaScript and CSS files to the Dashboard UI via the DashboardRoutes class.
  • AddedIGlobalConfiguration.UseJobDetailsRenderer method for custom renderers for Job Details page.
  • Added – Display deleted jobs in the Realtime and History graphs when supported by storage.
  • AddedIGlobalConfiguration.UseDashboardMetrics extension method to pass multiple metrics at once.
  • Added – State renderer for the DeletedState to display its new exception property.
  • Changed – Make it possible to display methods of non-loaded jobs in Dashboard UI when supported by storage.
  • Changed – Improved display of real-time chart with more accents on failed and deleted jobs.
  • Changed – Don't display queue name in state transition list when it's the default one.
  • Changed – Display scheduled job count when enqueued count is zero on the main metric.

Extensibility

  • AddedFactory, StateMachine and Performer properties to context classes to avoid injecting services.
  • Added – Allow to pass custom data to ApplyStateContext and ElectStateContext instances.
  • Added – Preserve custom data dictionary between the entire filter chain.
  • Added – Allow to pass transaction to background job state changer when new methods implemented.
  • Changed – Ignore some members when serializing a JobFilterAttribute instance to decrease payload size.

Storage

  • Added – Virtual JobStorage.GetReadOnlyConnection method intended to return JobStorageConnection for replicas.
  • Added – Virtual JobStorage.HasFeature method for querying optional features.
  • Added – Optional GetSetCount and GetUtcDateTime methods for the JobStorageConnection class.
  • Added – Optional AcquireDistributedLock and RemoveFromQueue methods for the JobStorageTransaction class.
  • Added – Support for transactional acknowledge using new storage method for better handling some data loss scenarios.
  • AddedCreateJob method to the JobStorageTransaction abstract class.
  • AddedSetJobParameter method to the JobStorageTransaction abstract class.
  • Added – Experimental JobStorageConnection.SetContains method.
  • Added – Optional ParametersSnapshot property for BackgroundJob and JobData classes to minimize roundtrips in future.
  • Added – Fetch "Retries" metric with other statistics when supported by storage.
  • AddedJobStorageMonitor class with more available methods for the new features.
  • Changed – Allow to query job parameters without additional roundtrip when supported by a storage.
  • Changed – Expose state data dictionaries in list DTOs when supported by storage.

Internals

  • AddedIBackgroundProcess.UseBackgroundPool now allows to pass thread configuration logic.
  • AddedBackgroundJobServerOptions.WorkerThreadConfigurationAction option for custom thread configuration.
  • Changed – Allow changing queues on the fly with custom worker configuration.
  • Changed – Avoid storage roundtrip to query job data in worker, take data from previous state change.
  • ChangedFromParameterAttribute-based logic now always overwrites arguments, even with non-null values.
  • Changed – Turn JobContinuationOptions enum into flags while still possible.
  • Changed – Re-implement TaskExtensions.WaitOneAsync only with the RegisterWaitForSingleObject method.
  • ChangedServerHeartbeatProcess now uses ThreadPriority.AboveNormal to prioritize heartbeats.

Hangfire.SqlServer

  • Added – Recommended Schema 8 migration with fixed JobQueue.Id column to use the bigint type.
  • Added – Automatic client package detection based on available types, preferring System.Data.SqlClient (by @0xced).
  • AddedSqlServerStorageOptions.DbProviderFactory option to use custom provider factory.
  • AddedTryAutoDetectSchemaDependentOptions option to automatically enable options based on schema.
  • AddedSqlServerStorage.SchemaVersion metric for Dashboard UI.
  • Added – Optional experimental transactional acknowledge for SQL Server (UseTransactionalAcknowledge option).
  • Added – Implement the Connection.GetUtcDateTime feature to make work new changes in schedulers.
  • 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 5 minute timeout.
  • Changed – Use command batching by default with 5-minute maximum timeout.
  • Changed – Enable UseRecommendedIsolationLevel option by default.
  • ChangedGetJobData now populates JobData.ParametersSnapshot property to avoid additional round-trips.
  • Changed – Display scheduled and processing jobs in the ascending order in Dashboard UI.
  • DeprecatedUsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
  • Breaking – Dropped NET45 platform target in favor of NET451 target to support Visual Studio 2022.

Hangfire.SqlServer.Msmq

  • Breaking – Dropped NET45 platform target in favor of NET451 target to support Visual Studio 2022.

Hangfire.NetCore and Hangfire.AspNetCore

  • AddedIApplicationBuilder.UseHangfireServer that accepts custom factory for IBackgroundProcessingServer.

1.7.30

10 Jun 07:47
Compare
Choose a tag to compare

Release Notes

  • Fixed – Don't consider SecurityException as a non-catchable one.
  • Fixed – Replace timer with a dedicated thread in AspNetShutdownDetector to avoid depending on thread pool.
  • Fixed – Better ASP.NET shutdown detection with yet another check based on internal state.
  • Fixed – Decrease AspNetShutdownDetector's check intervals to detect shutdowns earlier.
  • Fixed – Don't wait for server stop on AppDomain unloads when hosting in IIS to avoid delaying them.

1.7.29

23 May 08:36
Compare
Choose a tag to compare

Release Notes

Hangfire.Core

  • AddedRecurringJobManager.TriggerExecution method that returns identifier of a created job.
  • AddedGetRecurringJobIds extension method for JobStorageConnection that returns only identifiers.
  • AddedDashboardMetric.Url property to make it possible for metrics on the Overview page to be clickable (by @twinmind).
  • Changed – Bump Moment.js version to 2.29.3 in Dashboard UI (by @Westat-Transportation).
  • Fixed – Deserialization issues with DateOnly and TimeOnly in .NET 6.0 or other new types in CoreLib.
  • Fixed – Don't even try to catch unsafe exceptions like OutOfMemoryException or StackOverflowException.
  • Fixed – Add non-breaking space between Server Id and Status glyph on the Servers page.
  • Fixed – Problems with internal wait implementation shouldn't cause high CPU issues now, added protection and logging.
  • Fixed – Wait can't be performed now on a signaled ManualResetEvent instance in BackgroundExecution.

Hangfire.SqlServer

  • Fixed – Command batching is now fully working for the Microsoft.Data.SqlClient package (by @0xced).

1.7.28

18 Dec 21:06
Compare
Choose a tag to compare

Release Notes

Hangfire.Core

  • Fixed – Reduce the number of attempts in BackgroundJobStateChanger to avoid infinite loops.
  • Fixed – Typos in German translation (by @saxx).
  • Fixed – Translations in Turkish translation (by @can-zengin).

Hangfire.SqlServer

  • Fixed – Possibly fixed CPU consumption problems and high amounts of fetching queries after deploys to IIS.
  • Fixed – No more than a single long-polling query is allowed per storage instance when using sub-second polling.
  • Fixed – Don't depend on thread pool when sending heartbeats for active jobs to avoid problems when it's starved.