All Versions
18
Latest Version
Avg Release Cycle
83 days
Latest Release
352 days ago

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

    • โž• Add Quartz.OpenTracing support (#1006)
    • โž• Add UseZeroSizeThreadPool to configuration (#1003)

    ๐Ÿ›  FIXES

    • โฑ Xamarin Android can't get scheduler (#1008)
    • ๐Ÿ‘ท Autofac job factory registration fails (#1011)
  • 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 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

    • ๐Ÿ‘ท 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

    • ๐Ÿ”ง Unify MS dependency injection job factory logic and configuration (#995)
    • ๐Ÿ‘Œ Improve job dispatch performance to reduce latency before hitting Execute (RAMJobStore) (#996)
  • 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 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

    • ๐Ÿ“ฆ 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

    • โœ‚ Remove internal dependencies from examples (#742)
    • โฑ Properly assign MaxConcurrency in CreateVolatileScheduler (#726)
  • 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:

    ๐Ÿ“ฆ 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

    ๐Ÿ›  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)