quartznet

Quartz Enterprise Scheduler .NET

APACHE-2.0 License

Stars
6.3K
Committers
187

Bot releases are visible (Hide)

quartznet - Quartz.NET 3.13.0 Latest Release

Published by lahma 2 months ago

This release aims to modernize targeted platforms and used dependencies.

The System.Configuration.ConfigurationManager reference from non-framework builds. This means
using App.config's <quartz> section as Quartz configuration source is only supported on .NET Framework builds. This
change was made to reduce legacy dependencies and to make Quartz more compatible with modern .NET.

The netcoreapp3.1 target has been removed from DI and hosting integration packages which makes NET 6 the lowest supported
modern runtime version for those packages.

What's Changed

Full Changelog: https://github.com/quartznet/quartznet/compare/v3.12.0...v3.13.0

quartznet - Quartz.NET 3.12.0

Published by lahma 3 months ago

This release aims to alleviate some problems that have been present then Quartz's own global singletons clash
with DI containers singleton concept when DI container is being torn down during testing. Now both scheduler repository
and DB connection manager are scoped inside DI container and share container's lifetime.

If you want to have multiple service collections sharing same global state, you should manually register IDbConnectionManager
and ISchedulerRepository to DI as singletons pointing to global object instances.

// add globals before AddQuartz to get old behavior
services.AddSingleton<IDbConnectionManager>(DBConnectionManager.Instance);
services.AddSingleton<ISchedulerRepository>(SchedulerRepository.Instance);

services.AddQuartz(...)

What's Changed

Full Changelog: https://github.com/quartznet/quartznet/compare/v3.11.0...v3.12.0

quartznet - Quartz.NET 3.11.0

Published by lahma 3 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/quartznet/quartznet/compare/v3.10.0...v3.11.0

quartznet - Quartz.NET 3.10.0

Published by lahma 4 months ago

This release adds support for using System.Text.Json as serializer for JSON payloads stored in database via new integration package Quartz.Serialization.SystemTextJson. Please note that there might be small incompatibilities between Newtonsoft and STJ (de)serialization. If you are using only strings as data values, there should be no compatibility issues. Using the new integration package is ideal for new greenfield projects.

What's Changed

New Contributors

Full Changelog: https://github.com/quartznet/quartznet/compare/v3.9.0...v3.10.0

quartznet - Quartz.NET 3.9.0

Published by lahma 5 months ago

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: https://github.com/quartznet/quartznet/compare/v3.8.1...v3.9.0

quartznet - Quartz.NET 3.8.1

Published by lahma 8 months ago

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

What's Changed

New Contributors

Full Changelog: https://github.com/quartznet/quartznet/compare/v3.8.0...v3.8.1

quartznet - Quartz.NET 3.8.0

Published by lahma 11 months ago

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

New Contributors

Full Changelog: https://github.com/quartznet/quartznet/compare/v3.7.0...v3.8.0

quartznet - v3.7.0

Published by lahma about 1 year ago

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

What's Changed

New Contributors

Full Changelog: https://github.com/quartznet/quartznet/compare/v3.6.3...v3.7.0

quartznet - Quartz.NET 3.6.3

Published by lahma over 1 year ago

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

New Contributors

Full Changelog: https://github.com/quartznet/quartznet/compare/v3.6.2...v3.6.3

quartznet - Quartz.NET 3.6.2

Published by lahma over 1 year ago

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: https://github.com/quartznet/quartznet/compare/v3.6.1...v3.6.2

quartznet - Quartz.NET 3.6.1

Published by lahma over 1 year ago

❗ 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: https://github.com/quartznet/quartznet/compare/v3.6.0...v3.6.1

quartznet - Quartz.NET 3.6

Published by lahma over 1 year ago

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: https://github.com/quartznet/quartznet/compare/v3.5.0...v3.6.0

quartznet - Quartz.NET 3.5

Published by lahma about 2 years ago

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: https://github.com/quartznet/quartznet/compare/v3.4.0...v3.5.0

quartznet - Quartz.NET 3.4

Published by lahma over 2 years ago

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

Full Changelog: https://github.com/quartznet/quartznet/compare/v3.3.3...v3.4.0

quartznet - Quartz.NET 3.3.3

Published by lahma about 3 years ago

This is a maintenance release mostly fixing some smaller bugs and improving DI API story.

FIXES

  • Lock 'TRIGGER_ACCESS' attempt to return by: de9325af-3e1c-4ae9-a99b-24be994b75f4 -- but not owner! (#1236)
  • ScheduleJob shorthand: Job name should match trigger name by default (#1211)
  • CronTriggerImpl.WillFireOn returns wrong result when TimeZone is specified (#1187)
  • Race condition in DI scheduler listener initialization (#1117)
  • JobRunShell handle Job CancellationToken (#1183)
  • Restore System.Data.SqlClient support on .NET Core (#1181)

IMPROVEMENTS

  • Replace static loggers with instance-based (#1264)
  • Expose more configuration options via programmatic APIs (#1263)
  • Add ConfigureScope extension point to MicrosoftDependencyInjectionJobFactory (#1189)
  • Update StdAdoConstants.cs (#1186)
  • Use custom InstantiateType for all instantiations in StdSchedulerFactory (#1185)
  • Add support for the ISchedulerFactory.StartDelayed in the QuartzHostedService (#1166)
  • Remove SimpleThreadPool from examples? (#1230)
quartznet - Quartz.NET 3.3.2

Published by lahma over 3 years ago

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

  • Try resolving jobs from service provider before resorting to ActivatorUtilities (#1159)
  • Can't get hostname on WSL2+docker host network (#1158)
quartznet - Quartz.NET 3.3.1

Published by lahma over 3 years ago

This release fixes assembly signing problem introduced in 3.3.

FIXES

  • Remove PublicSign property from csproj (#1155)
quartznet - Quartz.NET 3.3.0

Published by lahma over 3 years ago

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!

GitHub Issues

BREAKING CHANGES

  • Activity source listener is not longer part of net461 build, only net472
  • Quartz.AspNetCore integration package minimum .NET Core version is now 3.1 for HealthChecks support

NEW FEATURES

  • Separate build configuration for .NET Framework 4.7.2
  • OpenTelemetry integration upgraded to target OpenTelemetry 1.0.0-rc1.1
  • Ported JobInterruptMonitorPlugin from Java version which allows automatic interrupt calls for registered jobs (#1110)
  • Rewrite semaphore implementations (#1115)
  • UsingJobData now has Guid and char overloads (#1141)
  • Add a regular AddJob(Type) (#1090)

FIXES

  • Jobs not firing after upgrade to 3.2.x (from 3.0.7) on Microsoft Server 2008 R2 (#1083)
  • Jobs are not fired (#1072)
  • MicrosoftDependencyInjectionJobFactory does not inject job properties for scoped jobs (#1106)
  • XSD schema no longer requires defining durable element if you just want to define recover (#1128)
  • Stack trace logging fixed in case of reporting invalid lock acquire (#1133)
  • Disposable job is disposed twice when using UseMicrosoftDependencyInjectionScopedJobFactory (#1120)
  • QuartzHostedService.StopAsync throws NullReferenceException if StartAsync hasn't been run (#1123)
quartznet - Quartz.NET 3.2.4

Published by lahma over 3 years ago

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 OperationCanceledExceptions as clean instead of being errors.

FIXES

  • JobRunShell silently handles OperationCanceledException which is not correct in terms of job retry handling (#1064)
  • Handled exceptions thrown while retrieving the misfired trigger (#1040)
  • 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)
quartznet - Quartz.NET 3.2.3

Published by lahma almost 4 years ago

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)