Quartz.NET 3.18.2 is a maintenance release that stabilizes the dashboard introduced in 3.18.0, fixes several scheduling correctness bugs, and speeds up cron next-fire-time computation. It is a drop-in upgrade from earlier 3.18.x releases — no breaking changes and no database schema migrations.
Highlights
- Type-load failures no longer stall the whole scheduler — a trigger or job whose type failed to load could throw inside
AcquireNextTriggerand block acquisition of every other trigger. The faulting trigger is now isolated so the rest keep firing. (#3108) - "Reschedule next" misfire policies no longer fire immediately — after a misfire, the reschedule-next policies could fire once right away instead of waiting for the next scheduled time. (#3100)
- Named-scheduler JSON config is honored — schedules defined under the root
Quartzconfiguration section were not loaded for named schedulers. (#3113) - Dashboard fixes — authorization policy no longer leaks to host-app endpoints (#3067); static assets and a custom
DashboardPathwork under a fail-closedFallbackPolicy, and the Blazor circuit is allowed anonymous access under the same policy (#3098, #3120); trigger and calendar JSON deserialization is fixed (#3102); and JobDataMap and SimpleSchedule trigger details now display correctly (#3132). - MySQL
FORCE INDEXfix — schema-qualified table prefixes produced a malformedFORCE INDEXhint. (#3086) - Faster cron scheduling — cron next-fire-time computation gains a bitmask fast path and avoids needless
DateTimeOffsetchurn in the hot loop. (#3126, #3129) - Smaller enhancements — health-check tags can now be passed to
AddQuartzServer(#3112), and new public helpers make plugin configuration extensible (#3104).
What's Changed
- Fix dashboard authorization policy leaking to host app endpoints (#3066) by @lahma in #3067
- Fix malformed MySQL FORCE INDEX hint with schema-qualified table prefix by @lahma in #3086
- Fix dashboard FallbackPolicy asset blocking, honor custom DashboardPath, document Blazor integration (3.x) by @lahma in #3098
- Fix reschedule-next misfire policies firing immediately after misfire (#3096) by @lahma in #3100
- Fix dashboard trigger and calendar JSON deserialization (#3094) by @lahma in #3102
- Fix type-load exceptions in AcquireNextTrigger blocking all other triggers by @lahma with @Copilot in #3108
- Fix JSON schedule config not loaded for named schedulers using root Quartz section (#3106) by @lahma in #3113
- Allow passing health check tags to AddQuartzServer by @lahma in #3112
- Strip 3.x branch docs to NuGet package READMEs only (#3116) by @lahma in #3119
- Allow the dashboard Blazor circuit anonymous access under a fail-closed FallbackPolicy (#3117) by @lahma in #3120
- Add public plugin configuration extensibility helpers (3.x) by @lahma in #3104
- Speed up cron next-fire-time computation with a bitmask fast path by @lahma in #3126
- Reduce DateTimeOffset churn in the cron next-fire-time loop (3.x) by @lahma in #3129
- Fix dashboard JobDataMap and SimpleSchedule trigger display (3.x) by @lahma in #3132
Full Changelog: v3.18.1...v3.18.2