From 86265fb7bcd9f8c5c1137e1f542a80f979c335c4 Mon Sep 17 00:00:00 2001 From: "lei.chen" Date: Thu, 13 Aug 2026 09:16:49 +0000 Subject: [PATCH] docs: mark PEND reason end-to-end done (bug-1513), note main_reason follow-up MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - aibot_poc_investiagting.md: PEND reason 调查完成 + 转换层补全;新增遗留项(main_reason 恒 0) - buglog.json: bug-1513 entry - memory.md: session log Co-Authored-By: Claude --- .wolf/buglog.json | 19 +++++++++++++++++++ .wolf/memory.md | 1 + docs/aibot_poc_investiagting.md | 3 ++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/.wolf/buglog.json b/.wolf/buglog.json index 5cf8cabe..95acedfe 100644 --- a/.wolf/buglog.json +++ b/.wolf/buglog.json @@ -15018,5 +15018,24 @@ ], "occurrences": 1, "last_seen": "2026-08-13" + }, + { + "id": "bug-1513", + "timestamp": "2026-08-13", + "error_message": "PEND reason 字段 pending_reason 声明了但恒为空:scheduler 已计算并 setpreason 到 controller,controller 已存 job->pend_reasons,但 API/SSE 查询作业永远拿不到(MCP 无法解释'为什么作业在等')", + "file": "src/controller/apiserver.c + src/frontend/apiserver/backend/{convert,convert_pure}.go + models/jobs.go", + "root_cause": "两个缺口叠加:(1) controller 的 apiserver_job_hook_fun 不处理 HOOK_DETAIL_SETPREASON——setpreason 事件不触发任何 JOB_* 推送,apiserver 永远收不到 pend_reasons 变化的作业(JOB_NEW/UPDATE/START/EXIT 才推);(2) apiserver 转换层 cJobToModel/rawJobToModel 从不读 C 的 xce_job_t.pend_reasons,且 JOB_DEFAULT_COLUMN 不含 pending_reason(默认查询不选该字段)。", + "fix": "(1) apiserver_job_hook_fun 加 case HOOK_DETAIL_SETPREASON 复用 apiserver_job_update_fun 推 updateJob;(2) cJobToModel/rawJobToModel 提取 pend_reasons(main_reason + host/res reasons)marshal 为 JSONB 塞进 models.JobInfo.PendingReason;JOB_DEFAULT_COLUMN 加 pending_reason。集群验证:resreq type==nosuchhost 作业 PEND 返回 host_reasons [{t1,3},{t2,3},{t3,3}](3=MATCH_FAIL)。commit ac6131d。遗留:main_reason 恒 0(allocator 只加明细 reason),修法待定。", + "tags": [ + "apiserver", + "pend-reason", + "setpreason-hook", + "conversion-gap", + "scheduler-agent", + "fixed" + ], + "related_bugs": [], + "occurrences": 1, + "last_seen": "2026-08-13" } ] \ No newline at end of file diff --git a/.wolf/memory.md b/.wolf/memory.md index 46b7dc5e..bfa42d57 100644 --- a/.wolf/memory.md +++ b/.wolf/memory.md @@ -7398,3 +7398,4 @@ |------|--------|---------|---------|--------| | 02:1x | Added human-readable jobid (job_id_human/human_id) to apiserver responses (backend.FormatJobID reuse); renamed SSE perm event:subscribe->event:view; updated docs (left_scheduler_work, design doc v1.3, cerebrum) | src/frontend/apiserver, src/frontend/schedulerclient, docs | verified live (submit + get_job return 1-0-... form); all tests pass; pushed | ~90k tok | | 06:21 | bug-1512 多 worker 过派发修复:handler.c code<0 才 re-PEND;24 作业 8/8/8 全 DONE;单测+提交 e4aaef4 | handler.c test_handlers.c | fixed+verified | ~2k | +| 09:1x | PEND reason 全链路补全(bug-1513):controller SETPREASON hook 推送 + apiserver 转换层填充 + JOB_DEFAULT_COLUMN;集群验证 resreq type==nosuchhost → host_reasons [{t1,3},{t2,3},{t3,3}];提交 ac6131d | apiserver.c convert.go convert_pure.go convert_test.go models/jobs.go | verified | ~40k | diff --git a/docs/aibot_poc_investiagting.md b/docs/aibot_poc_investiagting.md index be4c8179..ffdd2223 100644 --- a/docs/aibot_poc_investiagting.md +++ b/docs/aibot_poc_investiagting.md @@ -45,7 +45,8 @@ scheduler 侧已有 PEND 原因(`PREASON_NO_RESOURCE`、`PREASON_MATCH_FAIL` ## 四、待办 - [x] 检查 PEND reason 全链路(scheduler → apiserver)是否暴露齐全(2026-08-13 完成,结论:只差 apiserver Go 转换层) -- [ ] 补 apiserver 转换层:`cJobToModel` / `rawJobToModel` 填充 `PendingReason`(convert.go / convert_pure.go) +- [x] 补 apiserver 转换层:`cJobToModel` / `rawJobToModel` 填充 `PendingReason`(convert.go / convert_pure.go)—— **ac6131d 完成并集群验证** +- [ ] **(新)scheduler `main_reason` 恒为 0**:allocator 只加 host/res 明细 reason(`add_job_preason` host≠NULL 时只走 add_host/add_res 分支),从不设 main_reason → API 显示 `main_reason:0 / "unknown(0)"`。host_reasons(如 `[{t1,3},{t2,3},{t3,3}]`)信息完整可用;要不要让 `add_job_preason` 在 main_reason==0 时补首个 code,待定(需重建 lib+scheduler+controller) - [ ] ① 自愈闭环:失败归因分类器 + 自愈复跑流程 - [ ] ② 实时叙事 prompt/模板