Allow cron_retrigger to immediately fire recurring jobs.

Recurring tasks can start one extra run now without changing the cron schedule; delay remains oneshot-only.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-09-10 21:22:06 +08:00
parent c11221606a
commit 3ce60b200c
5 changed files with 58 additions and 21 deletions

View file

@ -35,7 +35,16 @@ test('isRetriggerable / publicJob.retriggerable for consumed oneshots', () => {
assert.equal(isRetriggerable(base, []), true)
assert.equal(publicJob(base, []).retriggerable, true)
assert.equal(isRetriggerable({ ...base, schedule: { kind: 'cron', expr: '0 9 * * *', timezone: 'UTC' } }, []), false)
const cron = {
...base,
schedule: { kind: 'cron', expr: '0 9 * * *', timezone: 'UTC' },
nextRunAt: now + 60_000,
lastStatus: null,
}
assert.equal(isRetriggerable(cron, []), true)
assert.equal(publicJob(cron, []).retriggerable, true)
assert.equal(isRetriggerable(cron, [{ id: 'r1', jobId: 'j1', status: 'running' }]), false)
assert.equal(isRetriggerable({ ...base, nextRunAt: now + 60_000 }, []), false)
assert.equal(isRetriggerable({ ...base, lastStatus: null }, []), false)
assert.equal(isRetriggerable(base, [{ id: 'r1', jobId: 'j1', status: 'running' }]), false)