-
Notifications
You must be signed in to change notification settings - Fork 0
Duplicate Schedule Detection
Fourteen jobs sharing 0 0 * * * is a fact worth surfacing before midnight proves it. cronstable groups the fleet's schedules by the engine's own semantic equality and reports every group of two or more jobs that fire on the identical set of instants.
Semantic, not textual: */5 * * * *, 0-59/5 * * * *, and @hourly versus 0 * * * * group together because the parsed field sets are equal (the same equality the scheduler itself uses to keep an unchanged job's next-fire instant across reloads). An H schedule joins a group only if its resolved slot really coincides with the others, which is exactly when it actually collides. The grouping also includes each job's resolved timezone, so two 0 0 * * * jobs in different zones, which never fire together, are not called duplicates.
Disabled and @reboot jobs are excluded for the same reason they are excluded from schedule pressure: they cannot collide with anything.
GET /schedule/duplicates
{
"jobs": 41,
"groups": [
{
"expression": "0 0 * * *",
"description": "At 00:00, every day",
"timezone": "UTC",
"count": 14,
"jobs": ["billing-export", "cleanup-tmp", "..."]
}
]
}Groups are sorted largest first; expression is the most common source spelling among the members, and description is the shared schedule in plain English. The same data backs the cron_schedule_duplicates MCP tool.
The web dashboard's schedule-pressure card lists the groups as clickable job chips (a chip opens that job's schedule tab), and the terminal dashboard's pressure overlay shows the top groups inline.
A duplicate group is not automatically a problem: four probes that must all fire each minute are supposed to coincide. The group becomes actionable when the members are independent batch work that merely happened to copy the same expression. Then either spread them with H hashed schedules (one edit per job, no coordination) or give each a concrete minute from Suggest a Slot.
This wiki documents cronstable. See the README and the changelog.
cronstable is a fork of gjcarneiro/yacron.
cronstable™ and the cronstable logo are trademarks of the cronstable authors; the code is MIT-licensed (see TRADEMARKS.md and LICENSE).
- Getting Started
- Configuration
- Job Behavior
- Integrations
- Reference and Development