docs: record bug-1512 multi-worker over-dispatch fix + wolf bookkeeping

- left_scheduler_work.md: bug-1494 子问题三(bug-1512)已修复,多 worker 8/8/8 均匀分布验证
- buglog.json: bug-1512 entry(controller code=0 成功 ack 被误判为失败)
- cerebrum.md: Do-Not-Repeat — notify 带 outcome code 字段时需按 controller 侧实际值做 gate
- memory.md: session log

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
lei.chen 2026-08-13 06:22:00 +00:00
parent e4aaef4b3b
commit 7b7294dd1e
4 changed files with 30 additions and 1 deletions

View file

@ -14994,5 +14994,29 @@
],
"occurrences": 1,
"last_seen": "2026-08-11"
},
{
"id": "bug-1512",
"timestamp": "2026-08-13",
"error_message": "多 worker 无法正常使用:t1/t2/t3 三 worker 下提交 24 个作业跑出 38 个实例,且堆积在第一个 worker(t1),分布 44:8:0 / 13:3:8 等严重不均",
"file": "src/scheduler/src/handler.c (sched_handle_notify jobDispatchFail case)",
"root_cause": "controller handle_jobdispatch (controller/job.c) 对每个派发的作业都发 NotifyData_data_jobDispatchFail:失败分支 code<0,但成功分支 else 也调 notify_dispatch(jobid, 0)——code=0 是成功 ack。scheduler sched_handle_notify 之前(bug-1510 修复 6928f74)无 code 判断,把成功 ack 也当失败 sched_requeue_pend_job → 每个成功派发的作业立即 re-PEND → 下次 session 重新选举 → 再派发,原实例继续跑 → 重复实例/过派发。是 bug-1510 修复引入的回归。",
"fix": "sched_handle_notify 的 jobDispatchFail case 加 code 判断:fail->code >= 0 是成功 ack,当 no-op 消费(作业已在 commit 时标记 RUN);只有 code < 0 才 sched_requeue_pend_job。加白盒单测 test_handle_dispatch_fail_requeues_only_on_negative_code(code=0 保持 RUN、code<0 re-PEND),原 15 测试全过。集群验证(新 scheduler 部署 t1):24 个 sleep-300 作业均匀 8/8/8 分布、零重复、全部 DONE;dispatchFail 日志从 38 降到 0。commit e4aaef4。",
"tags": [
"scheduler",
"over-dispatch",
"duplicate",
"multi-worker",
"dispatchfail",
"code-0-ack",
"regression",
"fixed"
],
"related_bugs": [
"bug-1494",
"bug-1510"
],
"occurrences": 1,
"last_seen": "2026-08-13"
}
]