Changelog History
Page 2
-
v1.7.8 Changes
December 05, 2019๐ Release Notes
Hangfire.Core
- โ Added โ
IGlobalConfiguration.UseResultsInContinuations
method to globally enable results for continuations. - โ Added โ Ability to push antecedent job's result to continuations via job parameters with
ContinuationsSupport
. - โ Added โ
JobParameterInjectionFilter
server filter to inject job parameters as arguments. - โ Added โ Allow to specify a custom thread factory in
UseBackgroundPool
methods. - ๐ Changed โ Add retry attempts for recurring jobs instead of immediately disabling them.
- ๐ Fixed โ
CultureInfo.InvariantCulture
is now restored properly in background jobs. - ๐ Fixed โ Recurring jobs aren't triggered early after changing their cron expressions.
- ๐ Fixed โ Don't trigger recurring job when it can't be scheduled due to errors.
- ๐ Fixed โ Argument with a
null
value is skipped when displaying job arguments in Dashboard UI. - ๐ Fixed โ Add a workaround for resolving
System.Diagnostics.Debug
type in .NET Core 3.0. - ๐ Deprecated โ Deprecate the
JobActivatorScope.InnerScope
property as it wasn't implemented.
Hangfire.SqlServer
- โ Added โ Support for Microsoft.Data.SqlClient package when using a custom connection factory (Part II).
- ๐ Fixed โ Remove
System.Data.SqlClient
dependency fromSqlCommandBatch
andExpirationManager
.
Hangfire.AspNetCore
- โ Added โ
IAppBuilder.MapHangfireDashboard
method for ASP.NET Core 3.0 endpoint routing (by @kendaleiv). - ๐ Changed โ Add explicit
netcoreapp3.0
target with "Microsoft.AspNetCore.App" framework reference (by @stebueh).
Hangfire.NetCore
- ๐ Changed โ Add explicit
netcoreapp3.0
target with reference to "3.0.0" packages.
๐ Documentation
- โ Added โ Making ASP.NET Core application always running on IIS (by @bamotav).
- ๐ Fixed โ Small typo on the "Getting Started in ASP.NET Core applications" page (by @msynk).
- ๐ Fixed โ Small spelling correction in "Throttling & Rate Limiters" (by @Bert-R).
- ๐ Fixed โ Small typo in the "Sending Email" tutorial (by @nabeelvalley).
- ๐ Fixed โ Correct spelling of 'prerequisites' in README.md (by @lgirvin).
- โ Added โ
-
v1.7.7 Changes
October 22, 2019๐ Release Notes
Hangfire.Core
- ๐ Changed โ Produce a trace log message with details when updating a recurring job.
- ๐ Changed โ Return early from
CoreBackgroundJobFactory.Create
when storage returnsnull
. - Project โ Minor changes for the
Readme.md
file (PR #1526 by @231293). - Project โ Add
netcoreapp3.0
target framework for Hangfire.Core.Tests. - Project โ Add support for MSBuild 15.0 (VS 2019) when building
*.cshtml
files.
๐ป Dashboard UI
- โ Added โ Allow modification of the Dashboard UI title (PR #1231 by @tbertenshaw).
- โ Added โ Support for HTML tags on the Dashboard UI title (PR #1545 by @caioproiete).
- โ Added โ Buttons for 1,000 and 5,000 items per page in dashboard (#1518).
- โ Added โ Links to previous/next pages to the top of the dashboard page (#1534).
- ๐ Changed โ Expose the
RazorPage.Context
property as a public member. - ๐ Fixed โ Supplementary Chinese translation (PR #1523 by @mccj).
- ๐ Fixed โ Don't update real-time chart when too much time passed since the last update (#1497).
Hangfire.SqlServer
- โ Added โ Add support for Microsoft.Data.SqlClient package when using custom connection factory (#1514).
- โ Added โ Add
UseFineGrainedLocks
option to avoid deadlocks in some theoretical cases. - โ Added โ Add missing overload for
UseSqlServerStorage
with connection factory parameter only. - โ Added โ Expose the SqlServerObjectsInstaller.GetInstallScript method (PR #1527 by @altso).
- ๐ Fixed โ Make command batching working on .NET Core when using System.Data.SqlClient 4.7.0 and higher.
- ๐ Fixed โ Permit dash characters (
-
) in schema names (PR #1531 by @kendaleiv). - ๐ Fixed โ Escape square bracket characters in schema names.
- Project โ Add support for
netcoreapp3.0
target in Hangfire.SqlServer.Tests. - Project โ Take schema name from constant in Hangfire.SqlServer.Tests (PR #1532 by @kendaleiv).
- Project โ Make Hangfire.SqlServer.Tests work on Linux in Travis CI environment.
Hangfire.AspNetCore
-
v1.7.6 Changes
August 05, 2019๐ Release Notes
Hangfire.Core
- ๐ Changed โ Add support for dash characters (
-
) in queue names (PR #1469 by @caioproiete). - ๐ Fixed โ Show actual error in Dashboard UI when recurring job can't be scheduled.
- ๐ Fixed โ Ensure backward compatibility when JSON payloads are serialized with field names only.
- ๐ Fixed โ Non-awaited continuations can bring down the whole app when
TaskScheduler
is set tonull
. - ๐ Fixed โ Timeout value is not respected in some cases in the
WaitOneAsync
method.
- ๐ Changed โ Add support for dash characters (
-
v1.7.5 Changes
July 18, 2019๐ Release Notes
Hangfire.Core
- ๐ Fixed โ Show error message when there's an error loading the statistics in Dashboard UI (PR #1242 by @prochnowc).
- ๐ Fixed โ Properly handle recurring jobs with null or empty 'Job' field.
- ๐ Fixed โ Disable recurring job when we can't schedule it due to an error.
- ๐ Fixed โ Use
LazyThreadSafetyMode.PublicationOnly
to avoid caching "JobStorage.Current is null" exceptions.
Hangfire.AspNetCore & Hangfire.NetCore
- ๐ Fixed โ Add missing overload for the
AddHangfireServer
method with "options" action.
-
v1.7.4 Changes
June 28, 2019๐ Release Notes
Hangfire.Core
- โ Added โ
BackgroundJobClient.RetryAttempts
property to make job creation resilient to transient exceptions. - โ Added โ Dashboard localization support in
pt-BR
(by @candidodmv). - ๐ Changed โ Protect background dispatchers from moving from stopped state to non-stopped one.
- ๐ Changed โ Unify
WaitOne
andWaitOneAsync
methods with timeout and cancellation token forWaitHandle
class. - ๐ Fixed โ Don't hide an original fatal exception occurred in dispatchers in some cases.
- ๐ Fixed โ Dashboard UI to display "await" keyword on all task-like methods.
- ๐ Fixed โ Display links properly in an informational message on the Servers page in Dashboard UI.
- ๐ Fixed โ Wait for the heartbeat process before shutting down a server.
Hangfire.SqlServer
- ๐ Fixed โ Potential deadlocks cause by suboptimal queries when using
SlidingInvisibilityTimeout
fetching. - ๐ Fixed โ Prevent zero delays between fetch retry attempts when lock acquisition failed without blocking.
- ๐ Fixed โ Specify float precision explicitly for the
Score
column in theAddToSet
method.
- โ Added โ
-
v1.7.3 Changes
May 23, 2019๐ Release Notes
๐ 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.
๐ฆ Affected Packages Hangfire.Core โค 1.6.25, 1.7.0, 1.7.1, 1.7.2 Affected Platforms All, including .NET Core, .NET Framework, Mono of any version
Steps to reproduce
public static void Xss() { BackgroundJob.Enqueue(() =\> Xss2()); }public static void Xss2() { throw new Exception("\<script\>alert(1);\</script\>"); }
Hangfire.Core
- ๐ SECURITY โ Use
HtmlEncode
in all remaining places in Dashboard UI to prevent XSS attacks. - โ Added โ Added Dutch language, and updated missing translation on "Servers" page (by @r-win).
- โ Added โ
Cron.Never
method for adding manual recurring jobs that never fire (by @michaltalaga). - ๐ Fixed โ Add missing
AddOrUpdate
extension methods for theIRecurringJobManager
interface. - ๐ Deprecated โ Unused
HtmlHelper.FormatProperties
method is now obsolete.
Hangfire.SqlServer
- ๐ Fixed โ Wrong error message in migration script, when @CurrentSchemaVersion has a NULL value (by @penenkel).
๐ Reporting security issues
๐ In order to give the community time to respond and upgrade we strongly urge you report all security issues privately. Please email us at [email protected] with details and we will respond ASAP. Security issues always take precedence over bug fixes and feature work. We can and do mark releases as "urgent" if they contain serious security fixes.
- ๐ SECURITY โ Use
-
v1.7.2 Changes
April 29, 2019๐ Release Notes
โฌ๏ธ > Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.7.html to learn how to upgrade from 1.6.X.
Hangfire.Core
- โ Added โ
DashboardOptions.TimeZoneResolver
property to handle custom time zone resolvers in Dashboard UI. - ๐ Fixed โ
RecurringJob.AddOrUpdate
method is now able to update a broken recurring job. - ๐ Fixed โ Recurring job scheduler now properly handles recurring jobs whose job method or time zone is wrong.
- ๐ Fixed โ Don't throw an exception on Recurring Jobs page when time zone can't be resolved.
Hangfire.AspNetCore & Hangfire.NetCore
- โ Added โ Automatically resolve
ITimeZoneResolver
service for theDashboardOptions.TimeZoneResolver
property. - ๐ Fixed โ Allow to resolve
IJobFilterProvider
service from theAddHangfire
method.
Hangfire.SqlServer
- ๐ Fixed โ Occasional "DataException: Error parsing column" error when using blocking fetch.
- โ Added โ
-
v1.7.1 Changes
April 16, 2019๐ Release Notes
โฌ๏ธ > Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.7.html to learn how to upgrade to 1.7.X.
๐ 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.Core
- โ Added โ
DashboardOptions.IgnoreAntiforgeryToken
property to disable token validation in Dashboard UI. - โ Added โ Display hints regarding server status on Servers page in Dashboard UI.
- โ Added โ Highlight recurring jobs with no next execution in Dashboard UI.
- โ Added โ Show actual error in Dashboard UI when recurring job has an invalid Cron expression.
- ๐ Fixed โ
InvalidOperationException
whenAllowSynchronousIO
option isn't set in ASP.NET Core 3.0. - ๐ Fixed โ Set
NextExecution
value tonull
when existing recurring job has an invalid Cron expression. - ๐ Fixed โ Make dashboard charts to be more culture-specific to use correct time format.
- ๐ Fixed โ Obsolete
UseSerializationSettings
comment now contains correct method name (by @PaitoAnderson). - Project โ
resx
files now re-generated automatically when building a project.
Hangfire.NetCore
- โ Added โ Worker Service host support for .NET Core without unnecessary dependencies to ASP.NET Core.
Hangfire.SqlServer
- ๐ Changed โ Use blocking fetch implementation only for sub-second polling intervals.
- ๐ Fixed โ Don't fail with an exception when can't connect to MS SQL instance during start-up.
- ๐ Fixed โ Don't access the
JobQueue
table when using blocking query and don't have results.
- โ Added โ
-
v1.7.0 Changes
March 29, 2019๐ Release Notes
โฌ๏ธ Please see the Upgrading to Hangfire 1.7 article to learn more about the upgrade steps.
Hangfire.Core
- โ Added โ Full .NET Core 2.0 support by explicitly targeting .NET Standard 2.0.
- โ Added โ
IGlobalConfiguration.SetDataCompatibilityLevel
to enable rolling upgrades from version 1.6. - โ Added โ
IGlobalConfiguration.UseRecommendedSerializerSettings
method for new installations. - โ Added โ Assemblies now loaded automatically when resolving a type when using default type resolver.
- โ Added โ Custom
TaskScheduler
can now be specified inBackgroundJobServerOptions
for workers. - โ Added โ
IdempotentCompletionAttribute
filter to enforce strict order for continuations. - โ Added โ
IBackgroundJobClient.ContinueJobWith
methods to replaceContinueWith
ones in future for clarity. - โ Added โ
JobStorage.LinearizableReads
virtual property to avoid unnecessary waits in state changer. - โ Added โ Allow async methods to run their continuations on worker thread by disabling
TaskScheduler
. - โ Added โ Multi-stage shutdown to wait for graceful completion before starting to abort jobs.
- โ Added โ Asynchronous checks for job cancellation,
IJobCancellationToken
can be replaced withCancellationToken
(by @pieceofsummer). - โ Added โ Possibility to create millions of recurring jobs without stressing the scheduler.
- โ Added โ Second-based recurring jobs are fully supported now with 6-part cron expressions.
- โ Added โ Support for custom
TimeZoneInfo
resolvers in recurring jobs for interoperability purposes. - โ Added โ Package now explicitly targets .NET Standard 2.0, and .NET Framework 4.6 target added as well.
- โ Added โ Type roundtrip support between .NET Core and .NET Framework for most common types.
- โ Added โ Allow to specify queue names based on job arguments with
QueueAttribute
via patterns. - โ Added โ
PerformContext.Storage
property to allow server filters to spawn connections. - โ Added โ
GetFirstByLowestScoreFromSet
connection method overload that returns multiple items (by @cdschneider). - โ Added โ Entry point for custom job naming strategies available for dashboard (by @pieceofsummer).
- โ Added โ
JobDisplayNameAttribute
class for displaying jobs in dashboard, available on .NET Core (by @pieceofsummer). - โ Added โ Support for async jobs returning ValueTask<T> (by @pieceofsummer).
- โ Added โ Support for asynchronous background processes, opens the road toward async storage.
- โ Added โ Circuit breaker pattern for background processes to reduce the logging pressure.
- โ Added โ Processing server is now able to detect it was expired, and restart itself with the new id.
- โ Added โ Ability to use custom delays for automatic retries of a background job.
- โ Added โ
ThreadAbortException
andThreadInterruptedException
handling to keep the background process running. - โ Added โ Support for complex Cron expressions, including the
L
,W
,#
characters. - โ Added โ
JobActivator.BeginScope
method overload with the fullPerformContext
(by @jeroenvervaeke). - โ Added โ Support for read-only view for dashboard (by @mikechamberlain).
- โ Added โ Storage property to control the job expiration time (by @rsilvanet).
- โ Added โ Decrease the size of serialized type payloads and remove version information.
- ๐ Changed โ Make
TaskScheduler.Default
the default scheduler for async jobs to avoid breaking changes. - ๐ Changed โ Split serializer setting to Internal and User scopes to isolate them (Version_170 Switch).
- ๐ Changed โ Don't allow to affect internal serialization even by
JsonConvert.DefaultSettings
(Version_170 Switch). - ๐ Changed โ Share the same type binder between Hangfire itself and Newtonsoft.Json (Version_170 Switch).
- ๐ Changed โ Use more compact representation of dates when using
SerializeDateTime
(Version_170 Switch). - ๐ Changed โ Stop using special case for
DateTime
argument serialization (Version_170 Switch). - ๐ Changed โ Don't serialize unused
AwaitingState.Expiration
field (Version_170 Switch). - ๐ Changed โ Specify parameter type when serializing arguments to allow using
TypeNameHandling.Auto
option. - ๐ Changed โ Use case sensitive search when resolving a type as by default in .NET.
- ๐ Changed โ Make
SucceededState
constructor public to allow state serialization. - ๐ Changed โ Add
IBackgroundJobFactory.StateMachine
property (breaking change for low level API). - ๐ Changed โ Replace Rickshaw with Chart.js to have beautiful charts with less headache.
- ๐ Changed โ
DelayedJobScheduler
is able to use the new storage method to query multiple jobs at once. - ๐ Changed โ
RecurringJobScheduler
now uses index-based checks to fetch only those jobs that should be scheduled. - ๐ Fixed โ Worker now logs an error, when all the state change attempts failed due to an exception.
- ๐ Fixed โ Don't serialize arguments multiple times when showing job details in dashboard.
- ๐ Fixed โ
DateTimeOffset
conversion error when it was serialized withTypeConverter
. - ๐ Fixed โ Remove duplicate of argument deserialization code for obsolete
Job
class methods. - ๐ Fixed โ Decorate all the exceptions with the
SerializableAttribute
. - ๐ Fixed โ
ArgumentNullException
when job class contains method with non-resolvable generic arguments. - ๐ Fixed โ "Failed to initialize CoreCLR" error, by removing reference to
Microsoft.NETCore.Portable.Compatibility
. - ๐ Fixed โ Possible race conditions in
RecurringJobScheduler
that may lead to job duplicates. - ๐ Fixed โ Configuration inconsistency introduced in 1.6.18 leading to issues with custom
JobActivator
. - ๐ Fixed โ Triggering the recurring task doesn't update its last execution time.
- ๐ Fixed โ Recurring job which don't have next execution (intentionally or not) don't cause exception.
- ๐ Fixed โ Dashboard recurring jobs sorting is random (now it's based on next execution time).
- ๐ Fixed โ Performance problems with huge amount of recurring jobs.
- ๐ Fixed โ
NextExecution
field of a recurring job has delay in value getting set. - ๐ Fixed โ Dashboard graphs have improper sizing.
- ๐ Fixed โ Server disappears from the list, but still performing the background processing.
- ๐ Fixed โ Logging is too aggressive on transient errors.
- ๐ Fixed โ Daylight saving time transitions now handled perfectly in recurring jobs thanks to Cronos.
- ๐ Fixed โ Confusing Cron scheduling, when both day-of-week and day-of-month fields set.
- Project โ Add
DataCompatibilityRangeFact
andDataCompatibilityRangeTheory
classes for compatibility checks. - Project โ Reduce test execution time by removing unnecessary waits.
Hangfire.AspNetCore
- โ Added โ Full .NET Core 2.0 support by explicitly targeting .NET Standard 2.0.
- โ Added โ An overloaded AddHangfire method with
IServiceProvider
parameter (by @ericgreenmix and @denis-ivanov). - โ Added โ
BackgroundJobServerHostedService
class based onIHostedService
interface. - โ Added โ
IServiceCollection.AddHangfireServer
method to register the server during configuration. - ๐ Changed โ Custom services for factory, performer and state changer interfaces will be picked up only when all of them registered.
Hangfire.SqlServer
- โ Added โ Full .NET Core 2.0 support by explicitly targeting .NET Standard 2.0.
- โ Added โ
Schema 7
migration to fix theIX_HangFire_Set_Score
index to include theKey
column. - โ Added โ
Schema 6
migration with less indexes, better physical layout andbigint
support (disabled by default). - โ Added โ Blocking fetch support for sliding expiration-based fetch to avoid excessive polling.
- โ Added โ
SqlServerStorageOptions.EnableHeavyMigrations
switch to automatically install even heavy migrations. - โ Added โ
SqlServerStorageOptions.DisableGlobalLocks
property to avoid custom locking scheme. - โ Added โ
SqlServerStorageOptions.UsePageLocksOnDequeue
property to use less CPU consuming fetch. - โ Added โ Callback method to allow to open the database with impersonation (by @BjoernHund).
- โ Added โ
SqlServerStorageOptions.UseRecommendedIsolationLevel
option to set the minimum possible level. - ๐ Changed โ Identity columns either converted to the
bigint
type, or entirely removed. - ๐ Changed โ Clustered indexes were organized according to the access patterns of their tables.
- ๐ Changed โ Most of secondary indexes were either removed or made filtered.
- ๐ Changed โ Optimize sliding-expiration-based fetching to use even less CPU time.
- ๐ Changed โ Use write reordering and fine-grained locking scheme to improve parallelism.
- ๐ Changed โ Monitoring API doesn't check state data to see state transition time.
- ๐ Changed โ Allow to use zero-based poll interval when sliding invisibility timeout.
- ๐ Changed โ Short paths for the
CreateExpiredJob
method to avoid some round-trips. - ๐ Changed โ Set
SqlParameter
types explicitly to not to duplicate query plans. - ๐ Changed โ Batch support for
AddToQueue
method when default provider is used. - ๐ Changed โ Check
FetchedAt
has expected value to prevent prolonging others' work. - ๐ Changed โ Use more recent Dapper 1.50.7 on all platforms except .NET Framework 4.5.
- ๐ Changed โ Dapper package is internalized now even on .NET Core to avoid possible conflicts.
- ๐ Fixed โ Avoid unnecessary waits in state changer when job was already expired.
- ๐ Fixed โ Cannot resolve the collation conflict in
CountersAggregator
. - ๐ Fixed โ Background processing stops when identity columns exceed the
Int32.MaxValue
. - ๐ Fixed โ Slowdown of scheduled jobs due to the missing index on the
[Set]
table.
-
v1.6.29 Changes
April 15, 2020๐ Release Notes
Hangfire.Core
- โ Added โ Add built-in support for reliable shutdown detection of ASP.NET apps.
- ๐ Changed โ Internal feature to perform state changes without calling any filters.
- ๐ Fixed โ Let workers to ignore any state change filters when all previous attempts to call them failed.
- ๐ Fixed โ Don't let
DelayedJobScheduler
to stall the pipeline when state filters throw an exception. - ๐ Fixed โ
JobLoadException
when new methods deployed, caused by overlapped recycles in ASP.NET applications. - ๐ Fixed โ Configuration changes aren't taken into account, caused by overlapped recycles in ASP.NET.
- ๐ Fixed โ Zombie servers shown on the "Servers" page that aren't stopped automatically unless app pool is recycled.
- ๐ Fixed โ Add another check before removing non-existing jobs from delayed jobs to avoid race conditions.