Quartz Enterprise Scheduler .NET
This release returns the possibility to resolve jobs from Microsoft DI container. Now container is checked first and if not found then
ActivatorUtilities is used to construct the type with constructor injection support. Now both AllowDefaultConstructor
and CreateScope
have
been obsoleted as behavior is now either via DI construction or ActivatorUtilities
and scope is always created to prevent resource leaks / double disposal.
Also a problem with host name resolution under WSL2 scenario was fixed.
FIXES
This release fixes assembly signing problem introduced in 3.3.
FIXES
This release addresses problems with using Quartz with .NET Full Framework lower than 4.7.2. ValueTask loading could fail due the dependencies brought with activity source support. Now activity sources are only supported when using .NET Framework >= 4.7.2 and netstandard >= 2.0. This also raises requirement the same way for package Quartz.OpenTelemetry.Instrumentation.
This release also improves trigger acquisition performance when using persistent job store, mostly by reducing network round-trips. The semaphore implementations were also re-written to gain more performance.
Also some bug fixes included, thanks to all contributors!
BREAKING CHANGES
net461
build, only net472
Quartz.AspNetCore
integration package minimum .NET Core version is now 3.1 for HealthChecks supportNEW FEATURES
JobInterruptMonitorPlugin
from Java version which allows automatic interrupt calls for registered jobs (#1110)UsingJobData
now has Guid
and char
overloads (#1141)AddJob(Type)
(#1090)FIXES
MicrosoftDependencyInjectionJobFactory
does not inject job properties for scoped jobs (#1106)durable
element if you just want to define recover
(#1128)UseMicrosoftDependencyInjectionScopedJobFactory
(#1120)QuartzHostedService.StopAsync
throws NullReferenceException
if StartAsync
hasn't been run (#1123)This release is a maintenance release with couple of bug fixes. The most important fix for this release is that
now Quartz distinguishes between external code task cancellation (say HttpClient
) and job cancellation triggered by using
the Quartz API's Interrupt
method. Earlier Quartz incorrectly considered also other OperationCanceledException
s as clean instead of being errors.
FIXES
JobRunShell
silently handles OperationCanceledException
which is not correct in terms of job retry handling (#1064)FileScanJob
is faling after upgrading from 3.0.7 to 3.2.3 (#1027)JobBuilder.UsingJobData(string key, string value)
should be JobBuilder.UsingJobData(string key, string? value)
(#1025)This release addresses issue with Autofac integration and adds new integration package Quartz.OpenTracing
to allow
integration with OpenTracing.
NEW FEATURE
FIXES
This release addresses regression in scoped job resolution which was introduced by job factory refactoring done in 3.2.1.
FIXES
This is a maintenance release containing mostly bug fixes.
MS dependency injection job factory configuration was unified and you can now configure relevant options
like whether to create a separate scope with using just the UseMicrosoftDependencyInjectionJobFactory
and its callback.
Now scoped jobs also get their properties set from job data map.
Pre-configuring Quartz options from appsettings.json
with services.Configure<QuartzOptions>(Configuration.GetSection("Quartz"));
now also works as expected.
FIXES
IMPROVEMENTS
This release concentrates on tweaking the DI story and fixing some found dependency issues.
Now Quartz no longer has hard dependency on Microsoft.Data.SqlClient, you need to add that dependency to your project if you are using Microsoft SQL Server as backing store for your project. Now requirement is in line with other providers/drivers.
There's also important fix for SQL Server where varying text parameter sizes caused query plan pollution.
BREAKING CHANGES
NEW FEATURE
FIXES
This release concentrates on performance and bringing support to de facto Microsoft libraries like dependency injection and ASP.NET Core hosting. A big change is that now SQL queries use parametrized scheduler name, which allows database server to reuse query plans and use indexes more optimally. This will help especially clusters which have large number of nodes. The SQL server indexes were also revisited and their amount reduced by using smarter covering indexes.
There is also a very important bug fix present for lock handling on retries. There was a possibility for a deadlock in database lock handling in some situations.
BREAKING CHANGES
Quartz.Impl.AdoJobStore.JobStoreSupport
(see also #818). Affected are only schedulers that use customized configurations of SQL commands in Quartz.Impl.AdoJobStore.JobStoreSupport
, e.g. SelectWithLockSQL
. Migration example:<!-- Quartz <=3.0.7 -->
<item key="quartz.jobStore.selectWithLockSQL">SELECT * FROM {0}LOCKS WITH (UPDLOCK,ROWLOCK) WHERE SCHED_NAME = {1} AND LOCK_NAME = @lockName</item>
<!-- Quartz >=3.1.0 -->
<item key="quartz.jobStore.selectWithLockSQL">SELECT * FROM {0}LOCKS WITH (UPDLOCK,ROWLOCK) WHERE SCHED_NAME = @schedulerName AND LOCK_NAME = @lockName</item>
NEW FEATURE
ClusterCheckinMisfireThreshold
(#692)FIXES
Read the beta 1 release notes and beta 2 release notes to know more.
The documentation for the new integration features is still being worked on.
NEW FEATURE
FIXES