Changelog History
Page 1
-
v3.2.3 Changes
October 31, 2020๐ This release addresses issue with Autofac integration and adds new integration package Quartz.OpenTracing to allow
integration with OpenTracing.๐ NEW FEATURE
๐ FIXES
-
v3.2.2 Changes
October 19, 2020๐ This release addresses regression in scoped job resolution which was introduced by job factory refactoring done in 3.2.1.
๐ FIXES
- ๐ Fix scoped job resolution (#998)
-
v3.2.1 Changes
October 18, 2020๐ 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 theUseMicrosoftDependencyInjectionJobFactory
and its callback.
๐ท Now scoped jobs also get their properties set from job data map.๐ง Pre-configuring Quartz options from
appsettings.json
withservices.Configure<QuartzOptions>(Configuration.GetSection("Quartz"));
now also works as expected.๐ FIXES
- ๐ท Make QuartzOptions Triggers and JobDetails public (#981)
- ๐ Fix configuration system injection for dictionary/quartz.jobStore.misfireThreshold in DI (#983)
- โฑ XMLSchedulingDataProcessor can cause IOException due to file locking (#993)
๐ IMPROVEMENTS
-
v3.2.0 Changes
October 02, 2020๐ 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
- โ Remove dependency on Microsoft.Data.SqlClient (#912)
- ๐ LogContext moved from Quartz namespace to Quartz.Logging namespace (#915)
- 0๏ธโฃ For Full Framework, System.Data.SqlClient is again the default provider, Microsoft.Data can be used via provider MicrosoftDataSqlClient (#916)
๐ NEW FEATURE
- Introduce separate Quartz.Extensions.Hosting (#911)
- โฑ You can now schedule job and trigger in MS DI integration with single .ScheduleJob call (#943)
- ๐ Support adding calendars to MS DI via AddCalendar<T> (#945)
๐ FIXES
- โช Revert change in 3.1: CronExpression/cron trigger throwing NotImplementedException when calculating final fire time (#905)
- ๐ Use 2.1 as the minimum version for the .NET Platform Extensions (#923)
- 0๏ธโฃ ServiceCollection.AddQuartz() should register default ITypeLoadHelper if none supplied (#924)
- ๐ท SqlServer AdoJobStore SqlParameter without text size generates pressure on server (#939)
- DbProvider initialization logic should also read quartz.config (#951)
- ๐ง LoggingJobHistoryPlugin and LoggingTriggerHistoryPlugin names are null with IoC configuration (#926)
- ๐ Improve options pattern to allow better custom configuration story (#955)
-
v3.1.0 Changes
July 24, 2020๐ 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
- ๐ minimum supported .NET Full Framework is now 4.6.1
๐ changed SQL commands format in
Quartz.Impl.AdoJobStore.JobStoreSupport
(see also #818). Affected are only schedulers that use customized configurations of SQL commands inQuartz.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
- ๐ฆ Microsoft DI integration via package Quartz.Extensions.DependencyInjection (also allows bridging to Microsoft Logging)
- โฑ DI configuration now supports adding scheduler, job and trigger listeners (#877)
- ๐ง DI configuration now processes appsettings.json section "Quartz" looking for key value pairs (#877)
- โ Add diagnostics source and OpenTelemetry support (#901)
- ๐ Use Microsoft.Data.SqlClient as SQL Server connection library (#839)
- ๐ฆ ASP.NET Core / Hosting integration and health checks via revisited NuGet package Quartz.AspNetCore (thank you zlzforever for contributing the work)
- Introduced a config parameter
ClusterCheckinMisfireThreshold
(#692) - Giving meaningful names to examples folders (#701)
- โ Added search patterns/sub directory search to directory scanner job (#411, #708)
- โฑ Fluent interface for scheduler configuration (#791)
- ๐ Support every nth week in cron expression (#790)
- ๐ท Enable SQLite job store provider for NetStandard (#802)
- โ Add configurable params for StdRowLockSemaphore for Failure obtaining db row lock
- SchedName added to queries as sql parameter (#818)
- โฌ๏ธ Server, example and test projects upgraded to user .NET Core 3.1
- Nullable reference type annotations have been enabled
- ๐ฆ Symbols are now provided as a separate NuGet symbol package (snupkg)
- โก๏ธ SQL Server indexes have been fine-tuned, redundancies were removed and you can follow the current scripts to update to latest version of them
- โฌ๏ธ Upgrade MySqlConnector to 1.0 (namespace has changed) (#890)
- ๐ Support Microsoft.Extensions.Logging.Abstractions (#756)
- ๐ Support Microsoft.Data.SQLite with full framework (#893)
- ๐ Support custom calendar JSON serialization (#697)
- โฑ DI configuration now supports adding scheduler, job and trigger listeners (#877)
- ๐ง DI configuration now processes appsettings.json section "Quartz" looking for key value pairs (#877)
- ๐ Use Microsoft.Data.SqlClient as SQL Server connection library (#839)
๐ FIXES
- ๐ Allow binary serialization for DirectoryScanJob data (#658)
- โก๏ธ LibLog - Fixed NLog + Log4net callsite. Added support for NLog structured logging. Optimized Log4net-logger (#705)
- โฌ๏ธ Upgrade LibLog to latest version (#749)
- ๐ RAMJobStore performance improvements (#718, #719, #720)
- ๐ General performance improvements (#725, #723, #727)
- GetTimeBefore() and GetFinalFireTime() should throw NotImplementedException instead of returning null (#731)
- ๐ฆ Switch to official TimeZoneConverter NuGet package (#739)
- โ Remove invalid TimeSpanParseRule.Days (#782)
- โก๏ธ Update tables_sqlServer.sql to follow current SQL syntax and structures (#787)
- ๐ Fix China Standard Time mapping in TimeZoneUtil.cs (#765)
- ๐ Release BLOCKED triggers in ReleaseAcquiredTrigger (#741 #800)
- DailyTimeIntervalTrigger failed to set endingDailyAfterCount = 1
- ๐ CronTrigger: cover all valid misfire policies, and provide a sensible default and logging when seeing an invalid one
- โ Remove internal dependencies from examples (#742)
- โฑ Properly assign MaxConcurrency in CreateVolatileScheduler (#726)
- ๐ Fix potential scheduler deadlock caused by changed lock request id inside ExecuteInNonManagedTXLock (#794)
- ๐ Ensure NuGet.exe is part of produced zip to ensure build works (#881)
- ๐ท JobDataMap with enum values persisted as JSON can now be set back to job members via PropertySettingJobFactory (#770)
- โฑ Ensure GetScheduleBuilder for triggers respects IgnoreMisfirePolicy (#750)
- โ Remove cron expression validation from XML schema and rely on CronExpression itself (#729)
-
v3.1.0-beta3 Changes
July 21, 2020๐ Read the beta 1 release notes and beta 2 release notes to know more.
Known Issues
๐ The documentation for the new integration features is still being worked on.
GitHub Issues
๐ NEW FEATURE
- โฌ๏ธ Upgrade MySqlConnector to 1.0 (namespace has changed) (#890)
- ๐ Support Microsoft.Extensions.Logging.Abstractions (#756)
- ๐ Support Microsoft.Data.SQLite with full framework (#893)
- ๐ Support custom calendar JSON serialization (#697)
๐ FIXES
-
v3.1.0-beta2 Changes
July 14, 2020๐ This release builds on top of beta 1 adding more fixes and improvements. Read the beta 1 release notes to know more.
Known Issues
๐ The documentation for the new integration features is still being worked on.
GitHub Issues
๐ NEW FEATURE
- โฑ DI configuration now supports adding scheduler, job and trigger listeners (#877)
- ๐ง DI configuration now processes appsettings.json section "Quartz" looking for key value pairs (#877)
- ๐ Use Microsoft.Data.SqlClient as SQL Server connection library (#839)
๐ FIXES
- ๐ Fix potential scheduler deadlock caused by changed lock request id inside ExecuteInNonManagedTXLock (#794)
- ๐ Ensure NuGet.exe is part of produced zip to ensure build works (#881)
- ๐ท JobDataMap with enum values persisted as JSON can now be set back to job members via PropertySettingJobFactory (#770)
- โฑ Ensure GetScheduleBuilder for triggers respects IgnoreMisfirePolicy (#750)
- โ Remove cron expression validation from XML schema and rely on CronExpression itself (#729)
-
v3.1.0-beta1 Changes
July 08, 2020๐ Support for ASP.NET Core Dependency Injection and Hosted Services
๐ฆ You can find the revisited packages as:
- ๐ฆ Quartz.Extensions.DependencyInjection - Microsoft DI integration
- ๐ฆ Quartz.AspNetCore - ASP.NET Core integration
๐ฆ I would like to thank both Facundo Glaeser and Lewis Zou for working with the new integration packages and their logistics.
๐ The best resouce the see the new DI integration in progress is to head to the example ASP.NET Core application.
๐ Index and query performance improvements
โฑ A big change on the persistent store side 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.
โก๏ธ See the updated create index definition for more details.
๐ There are also some minor bug fixes present.
Known Issues
๐ The documentation for the new integration features is still being worked on.
GitHub Issues
๐ฅ BREAKING CHANGES
- ๐ minimum supported .NET Full Framework is now 4.6.1
๐ NEW FEATURE
- ๐ฆ Microsoft DI integration via package Quartz.Extensions.DependencyInjection (also allows briding to Microsoft Logging)
- ๐ฆ ASP.NET Core / Hosting integration and health checks via revisited NuGet package Quartz.AspNetCore (thank you zlzforever for contributing the work)
- Introduced a config parameter
ClusterCheckinMisfireThreshold
(#692) - Giving meaningful names to examples folders (#701)
- โ Added search patterns/sub directory search to directoty scanner job (#411, #708)
- โฑ Fluent interface for scheduler configuration (#791)
- ๐ Support every nth week in cron expression (#790)
- ๐ท Enable SQLite job store provider for NetStandard (#802)
- โ Add configurable params for StdRowLockSemaphore for Failure obtaining db row lock
- SchedName added to queries as sql paramteter (#818)
- โฌ๏ธ Server, example and test projects upgraded to user .NET Core 3.1
- Nullable reference type annotations have been enabled
- ๐ฆ Symbols are now provided as a separate NuGet symbol package (snupkg)
- โก๏ธ SQL Server indexes have been fine-tuned, redudancies were removed and you can follow the current scripts to update to latest version of them
๐ FIXES
- ๐ Allow binary serialization for DirectoryScanJob data (#658)
- โก๏ธ LibLog - Fixed NLog + Log4net callsite. Added support for NLog structured logging. Optimized Log4net-logger (#705)
- โฌ๏ธ Upgrade LibLog to latest version (#749)
- ๐ RAMJobStore performance improvements (#718, #719, #720)
- ๐ General performance improvements (#725, #723, #727)
- GetTimeBefore() and GetFinalFireTime() should throw NotImplementedException instead of returning null (#731)
- ๐ฆ Switch to official TimeZoneConverter NuGet package (#739)
- โ Remove invalid TimeSpanParseRule.Days (#782)
- โก๏ธ Update tables_sqlServer.sql to follow current SQL syntax and structures (#787)
- ๐ Fix China Standard Time mapping in TimeZoneUtil.cs (#765)
- ๐ Release BLOCKED triggers in ReleaseAcquiredTrigger (#741 #800)
- DailyTimeIntervalTrigger failed to set endingDailyAfterCount = 1
- ๐ CronTrigger: cover all valid misfire policies, and provide a sensible default and logging when seeing an invalid one
-
v3.0.7 Changes
October 07, 2018๐ This release brings .NET Core 2.1 version of example server and adds new plugin
๐ Quartz.Plugins.TimeZoneConverter which allows usage of TimeZoneConverter library to get consistent time zone id parsing between
๐ง Linux and Windows.๐ท There are also some bug fixes related to AdoJobStore.
๐ NEW FEATURE
- โ Add .NET Core 2.1 version of example server (#682)
- ๐ New plugin Quartz.Plugins.TimeZoneConverter which allows usage of TimeZoneConverter library (#647)
๐ FIXES
- โ Added transient codes from EF into new JobStore (#681)
- Parametrized queries produced by ReplaceTablePrefix should be cached (#651)
- ๐ Use TypeNameHandling.Auto for JsonObjectSerializer (#621)
- ๐ Fix a race condition that could cause duplicate trigger firings (#690)
- โฑ ISchedulerListener.JobScheduled not called when scheduling multiple jobs (ScheduleJobs) (#678)
-
v3.0.6 Changes
July 06, 2018๐ This release fixes a nasty bug with JSON calendar database serialization and .NET Core SQL Server client libraries
โก๏ธ have been updated to mitigiate possible hangs when connection drops occur.Also some other minor bugs have been also addressed.
๐ You should now be able to debug into Quartz.NET sources with added SourceLink support.
๐ NEW FEATURE
- โ Add SourceLink support (#642)
- โฑ Make JobInterrupted method virtual in class SchedulerListenerSupport (#631)
๐ FIXES
- ๐ Trigger group can be left as paused when all triggers have been removed (#641)
- ๐ PlatformNotSupportedException on RaspberryPi (Windows IoT) (#630)
- 0๏ธโฃ JSON serialisation returning defaults for derived calendar settings (#634)
- .NET Core version not able to recover from DB connection drops (#637)