Releases: quartznet/quartznet
Quartz.NET 3.9.0
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
- @williamdenton made their first contribution in #2335
Full Changelog: v3.8.1...v3.9.0
Quartz.NET 3.8.1
This release contains small bug fixes and now the NuGet packages have the much-touted package readmes.
What's Changed
- Add package README files by @lahma in #2199
- Fix handling of env var quartz.config (#2212) by @delta-emil in #2213
- Upgrade to NUKE 8 by @lahma in #2251
- Use configured type loader in scheduler factory init by @lahma in #2268
New Contributors
- @delta-emil made their first contribution in #2213
Full Changelog: v3.8.0...v3.8.1
Quartz.NET 3.8.0
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
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, removeUseMicrosoftDependencyInjectionScopedJobFactory()
by @lahma in #2085 - Change
QuartzHostedService
frominternal
topublic
by @rf-0 in #2090 - Remove enumerator usage in
AcquireNextTriggers
when gettingtimeTriggers
min value by @lahma in #2092 - Make
private
andinternal
classessealed
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
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
- @romantitov made their first contribution in #1950
- @msa48 made their first contribution in #1960
- @dima-zhemkov made their first contribution in #1995
- @alanblack made their first contribution in #2004
- @OronDF343 made their first contribution in #2061
Full Changelog: v3.6.2...v3.6.3
Quartz.NET 3.6.2
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
β 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
- @IlyaVassyutovich made their first contribution in #1923
- @j0hannesdd made their first contribution in #1917
Full Changelog: v3.6.0...v3.6.1
Quartz.NET 3.6
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
NEW FEATURES
- Allow
PersistJobDataAfterExecution
andConcurrentExecutionDisallowed
to be explicitly set inJobBuilder
and pulled up toIJobConfigurator
(#1575) - Add
TryGet
functions toJobDataMap
andStringKeyDirtyFlagMap
(#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.
- If you previously had configuration with the 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 fromDictionary<string, string?>
instead ofNameValueCollection
to fix Microsoft.Extensions.Configuration 7 RC integration (#1748)
IMPROVEMENTS
- Reduce scheduler initialization logging noise (#1752)
New Contributors
- @Sobotkama made their first contribution in #1580
- @asherber made their first contribution in #1592
- @jcracknell made their first contribution in #1588
- @devbased made their first contribution in #1710
Full Changelog: v3.4.0...v3.5.0
Quartz.NET 3.4
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
- Quartz.OpenTelemetry.Instrumentation is now obsolete as there is contrib package OpenTelemetry.Instrumentation.Quartz on OT side
- .NET Framework minimum version is 4.6.2 (previously 4.6.1) (#1549)
NEW CONTRIBUTORS
- @zihotki made their first contribution in #1275
- @justmara made their first contribution in #1286
- @kolpav made their first contribution in #1298
- @Kuznetsov-Alexey made their first contribution in #1345
- @CodeDrop made their first contribution in #1465
- @Pifanjr made their first contribution in #1485
- @Strandinator made their first contribution in #1513
- @aschuhde made their first contribution in #1519
- @qzavyer made their first contribution in #1522
- @marceloceccon made their first contribution in #1534
- @Suchiman made their first contribution in #1535
- @bencyoung-Fignum made their first contribution in #1497
Full Changelog: v3.3.3...v3.4.0