35 lines
1.1 KiB
Markdown
35 lines
1.1 KiB
Markdown
# Changelog — 一次性调度失败回滚(2026-06-04)
|
||
|
||
## 摘要
|
||
|
||
修复 `run_mode=once` 的推送/脚本调度在执行失败后无法再次触发的问题。
|
||
|
||
## 动机
|
||
|
||
调度器在触发前将 `enabled=False` 并写入 `last_run_at` 以防重复触发;若随后执行失败,旧逻辑只对 cron 回滚 `last_run_at`,一次性任务保持禁用,运维侧表现为「任务跑了一次就永远消失」。
|
||
|
||
## 变更
|
||
|
||
| 文件 | 说明 |
|
||
|------|------|
|
||
| `server/background/schedule_runner.py` | 新增 `rollback_schedule_after_failed_run()`;失败时 once 恢复 `enabled=True` |
|
||
| `tests/test_schedule_runner_once.py` | 回滚行为单测 |
|
||
| `docs/reports/audit-bug-line-walk-2026-06-04-batch2.md` | BUG Batch 2 审计报告 |
|
||
|
||
## 迁移 / 重启
|
||
|
||
- 需重启 Nexus 后端(Supervisor `nexus`)以加载 `schedule_runner` 变更。
|
||
- 无数据库迁移。
|
||
|
||
## 验证
|
||
|
||
```bash
|
||
ruff check server/background/schedule_runner.py
|
||
pytest tests/test_schedule_runner_once.py -q
|
||
```
|
||
|
||
## 关联
|
||
|
||
- BUG-06-04-04(Batch 2)
|
||
- 前序:Batch 1 安装锁与 script callback 聚合 — `docs/changelog/2026-06-04-install-lock-atomic.md`
|