Skip to content

Releases: quartznet/quartznet

Quartz.NET 3.9.0

09 May 10:19
Compare
Choose a tag to compare

What's Changed

  • Fix Holiday Calendar with Nested Calendars sometimes crashing when resolving NextIncludedTime (#2270)
  • Add WithDailyTimeIntervalSchedule overload with explicit interval and interval unit (#1152)
  • Improve performance of DailyCalendar.GetNextIncludedTimeUtc (#2285)
  • Add support for IAsyncDisposable jobs and MS DI resources (#2335)
  • Make IJobWrapper public (#2313)

New Contributors

Full Changelog: v3.8.1...v3.9.0

Quartz.NET 3.8.1

17 Feb 11:05
Compare
Choose a tag to compare

This release contains small bug fixes and now the NuGet packages have the much-touted package readmes.

What's Changed

New Contributors

Full Changelog: v3.8.0...v3.8.1

Quartz.NET 3.8.0

18 Nov 11:54
Compare
Choose a tag to compare

This most notably tries to improve Quartz API and metadata to handle NET 8 trimming capabilities better, but there's probably still issues to encounter. When using trimming one should use the strongly-typed MS DI integration and SchedulerBuilder APIs.

What's Changed

  • Add Qodana scanning by @lahma in #2110
  • Ensure that the DailyCalendar use the same TimeZone offset for all the checks by @kvpt in #2113
  • Fix for JobDataMap, TryGetValue return false when key is null/doesn't exist by @jafin in #2125
  • SendMailJob to throw JobExecutionException on BuildMessage construction failure due to missing mandatory params. by @jafin in #2126
  • Backport test changes to ReschedulingTriggerShouldKeepOriginalNextFireTime from main to 3.x by @jafin in #2129
  • JobInterruptMonitorPlugin should tolerate missing JobDataMapKeyAutoInterruptable by @lahma in #2191
  • Add NET 8.0 targeting by @lahma in #2192
  • Upgrade TimeZoneConverter to version 6.1.0 by @lahma in #2194
  • Improve trimming compatibility by @lahma in #2195
  • Support injecting dependencies to XMLSchedulingDataProcessorPlugin by @lahma in #2196
  • Enable trimmed publish for ASP.NET Core example by @lahma in #2197

New Contributors

Full Changelog: v3.7.0...v3.8.0

Quartz.NET 3.7.0

04 Aug 16:31
Compare
Choose a tag to compare

This release has some work pointing people towards more sustainable API usage. Adding .NET 6.0 target for less dependencies.

What's Changed

  • Improve custom job store DI registration API by @lahma in #2063
  • Obsolete plain UseJsonSerializer() by @lahma in #2077
  • Mark UseMicrosoftDependencyInjectionJobFactory() as obsolete, remove UseMicrosoftDependencyInjectionScopedJobFactory() by @lahma in #2085
  • Change QuartzHostedService from internal to public by @rf-0 in #2090
  • Remove enumerator usage in AcquireNextTriggers when getting timeTriggers min value by @lahma in #2092
  • Make private and internal classes sealed by @lahma in #2098
  • Add net6.0 target by @lahma in #2106

New Contributors

Full Changelog: v3.6.3...v3.7.0

Quartz.NET 3.6.3

25 Jun 16:15
Compare
Choose a tag to compare

To celebrate my daughter's 8th birthday, let's have a maintenance release. This release brings important fix to scoped job dependency disposal which had regressed in 3.6.1 release.

What's Changed

  • Run postgres integration tests as part of CI build by @lahma in #1935
  • Change QuartzServiceCollectionExtensions namespace to Quartz.AspNetCore in Quartz.AspNetCore project by @romantitov in #1950
  • Detect invalid CRON expression character trailing a '?' by @jafin in #1955
  • ServiceCollectionSchedulerFactory.GetNamedConnectionString passes wrong value to base by @msa48 in #1960
  • Extend object passed to DiagnosticListener.Start/EndActivity by @dima-zhemkov in #1995
  • JobInterruptMonitor Plugin: Read MaxRunTime from MergedJobDataMap by @alanblack in #2004
  • V3: return PersistJobDataAfterExecution flag in SelectJobDetail.fixed not… by @wuuer in #2014
  • Fix persistence of extended properties when the trigger type is changed (v3) by @philr in #2040
  • Fix disposing of MS DI job scopes by @lahma in #2059
  • [3.x] Optimize reading blobs on SQL Server by @OronDF343 in #2061

New Contributors

Full Changelog: v3.6.2...v3.6.3

Quartz.NET 3.6.2

25 Feb 13:24
Compare
Choose a tag to compare

This is fix to a fix release, 3.6.1 introduced a regression to job selection logic when using persistent job store.

FIXES

  • Fix SqlSelectJobDetail to include IS_NONCONCURRENT (#1927)

Full Changelog: v3.6.1...v3.6.2

Quartz.NET 3.6.1

25 Feb 08:30
Compare
Choose a tag to compare
❗ This release had a problem, use 3.6.2 instead

This bug fix release contains an important fix to anyone configuring jobs using job builder's DisallowConcurrentExecution()
without having the attribute DisallowConcurrentExecutionAttribute on type itself.

FIXES

  • Add missing "disallow concurrency" materialization for jobs (#1923)
  • Allow accessing the wrapped scoped job instance from job execution context (#1917)
  • JobDiagnosticsWriter can throw error when writing context data (#1191)

New Contributors

Full Changelog: v3.6.0...v3.6.1

Quartz.NET 3.6

29 Jan 09:50
6f379e0
Compare
Choose a tag to compare

This release contains new API to reset errored trigger state in job store, some bug fixes and refinement of package dependencies/targets.

NEW FEATURES

  • Add explicit netcoreapp3.1 and net6.0 targets to MS integration projects (#1879)
  • Use IHostApplicationLifetime instead of IApplicationLifetime in >= netcoreapp3.1 Hosting targets (#1593)
  • Add ResetTriggerFromErrorState functionality (#1904)

FIXES

  • Fix named connection string resolution when using MS DI and its configuration system (#1839)
  • Upgrade to System.Configuration.ConfigurationManager 6.0.1 to avoid vulnerable dependency chain (#1792)
  • Fix configuration handling for custom DB provider (#1795)
  • Add extra overloads for registering listeners (#1852)
  • JobDataMap.TryGetGuidValue should return Guid instead of int (#1856)
  • Upgrade to Newtonsoft.Json 13.0.1 (#1859)

Full Changelog: v3.5.0...v3.6.0

Quartz.NET 3.5

18 Sep 10:28
Compare
Choose a tag to compare

NEW FEATURES

  • Allow PersistJobDataAfterExecution and ConcurrentExecutionDisallowed to be explicitly set in JobBuilder and pulled up to IJobConfigurator (#1575)
  • Add TryGet functions to JobDataMap and StringKeyDirtyFlagMap (#1592)
  • Add UseMySqlConnector overload for DB configuration (#1621)
  • Validate database schema during scheduler initialization (#1716)
  • Support DataSource name configuration (#1710)
  • Add UsePersistentStore<T> where T : IJobStore in DI Extension (#1715)

FIXES

  • Make RAMJobStore.RemoveJobInternal return true even if job has no triggers (#1580)
  • Configuration property quartz.jobStore.dbRetryInterval will be correctly set when constructing the Scheduler JobStore.
    • If you previously had configuration with the key quartz.scheduler.dbFailureRetryInterval please change to the above mentioned key.
  • DailyCalendar doesn't include first and last millisecond of day in checks (#1665)
  • StdSchedulerFactory and derived factories are not thread-safe (#1587)
  • Change QuartzOptions to inherit from Dictionary<string, string?> instead of NameValueCollection to fix Microsoft.Extensions.Configuration 7 RC integration (#1748)

IMPROVEMENTS

  • Reduce scheduler initialization logging noise (#1752)

New Contributors

Full Changelog: v3.4.0...v3.5.0

Quartz.NET 3.4

27 Mar 08:27
Compare
Choose a tag to compare

This release has Quartz jobs start executing only after application startup completes successfully, unless QuartzHostedServiceOptions are used to specify otherwise. By default, this prevents jobs from running while the application is still starting, and it alleviates the need to use arbitrary start delays to achieve the effect manually.

Quartz.OpenTelemetry.Instrumentation has been marked obsolete as there's official contrib project on OpenTelemetry project side.

FIXES

  • Fix for job type loading after version change (#1286)
  • Fix StartDelayed delaying the start of other hosted services (#1314)
  • Set NextFireTime of the replaced trigger relative to the old trigger's StartTime if the old trigger's PreviousFireTime is null (#1519)
  • Include InvertTimeRange property in DailyCalendar.Clone (#1522)
  • QuartzHealthCheck never recovers after detecting failure (#1496)
  • Microsoft DI integration does not working with Microsoft.Extensions.Hosting v7 preview (#1544)

IMPROVEMENTS

  • Jobs now start executing after application startup completes successfully (#1432)
  • Support strongly-typed configuration of IDbProvider (#1312)
  • Add MSSQL Script compatible with SQL 2014 and 2012 (#1337)
  • Added usage of DisallowConcurrentExecutionAttribute for interfaces (#1345)
  • Multiple performance improvements (#1351, #1355, #1354, #1353, #1356, #1358)
  • Increase precision of SimpleTriggerImpl to ticks. (#1360)
  • Switch from FAKE to NUKE (#1413)
  • QuartzHostedService now has jobs start after application startup (#1449)
  • QuartzHostedServiceOptions can let jobs be started as part of application startup, as before this version (#1432)
  • Add helper methods to setup Microsoft.Data.Sqlite (#1275)
  • Quartz will scan job and trigger listeners from MS DI container automatically (#1561)

BREAKING CHANGES

NEW CONTRIBUTORS

Full Changelog: v3.3.3...v3.4.0