跳到內容

Cron 生命週期與 replacement update

Cron job statuses 是 activepausedfiringcompletedcancelledexpiredfailedset_enabled(false) 會暫停仍符合條件的工作並保留歷史;set_enabled(true) 會恢復 eligible paused job、清除連續 failure/skip counters 與 first-loss timestamp、移除 cancellation reason,並重新計算 next fire time。completedcancelledexpiredfailed 是 terminal outcomes,必須依目前 action result 解釋。

update_job 是 replacement,不是原 row in-place mutation。成功後應從 response 讀取新的 cronJobId,所有後續操作都改用新 ID;replacesCronJobId 指向舊工作,舊工作會以 system:replaced 原因取消。dry-run 不代表 replacement 已寫入。

run_now 需要使用者確認,只接受 activepaused job。它會建立 manual fire,但不改動 nextFireAtrunCount、排程或 skip counters。第一次呼叫後即使 job 變成 terminal,使用相同 idempotency key 重試仍會回傳原結果。

Web/API 的 duplicate 會建立 active 但停用的草稿、清空 dedupe key,且除了正常 floor 以外不複製 Agent grants。已 completed 的 once job 與已 expired 的 recurring job 也可複製;歷史 runAtendAtexpiresAt 會保留供編輯,但在排程有未來 occurrence 前不可啟用。

cancel_job 需要使用者確認,之後會停止未來正常 fires,但保留歷史與 telemetry,並不是刪除。terminal completedexpiredfailedcancelled job 不可恢復或取消。update、cancel、run-now 都使用 strict drift;update 採用 ConfirmationPolicy::None,cancel 與 run-now 採用 ConfirmationPolicy::UserConfirm

arinova.cron.get_job, arinova.cron.update_job, arinova.cron.set_enabled, arinova.cron.cancel_job, arinova.cron.run_now

Also known as

暫停 Cron, 恢復排程, 取代工作, 新 cronJobId, 取消排程, system replaced


Machine-readable Markdown · Knowledge index

Build a7f47a5ca54ddcf7806cd48b81ce1b9827042766