docs(buglog): record bug-1508 — heartbeat nop reply poisons shared wbuf (peek 501)

This commit is contained in:
lei.chen 2026-08-05 09:43:08 +00:00
parent 67f3f6ad80
commit 8b81ba7336

View file

@ -14875,5 +14875,24 @@
],
"occurrences": 1,
"last_seen": "2026-08-05"
},
{
"id": "bug-1508",
"timestamp": "2026-08-05",
"error_message": "job peek 首次调用报 501 'xcecli_fetchfile returned nil reply' (后续调用偶发成功); 包含运行中作业。",
"file": "src/lib/xcectx.c (xce_handle_reply)",
"root_cause": "apiserver 心跳每 30s 发 fire-and-forget nop(xce_nop 不等回复); controller 对每个 nop 回 status=0 reply; xce_handle_reply 对 OPCode_nop 走 default 返回 -ENOENT(非零) -> vtask_entry 调用 xce_wakeup 把 nop status 写进共享单槽 wbuf; 心跳不消费 wbuf -> 下一个阻塞调用(fetchfile)消费到陈旧 nop status -> status=0 但 ctx->reply.u.fetchfilereply 仍为 NULL -> 'nil reply' -> 501。",
"fix": "xce_handle_reply 对 OPCode_nop 静默返回 0(不 wake), 心跳回复不再污染 wbuf; 控制操作(jobctrl 等)走 default 仍正常 wake。带回归测试 test_handle_reply_nop_does_not_wake(红->绿)。",
"tags": [
"libxce",
"peek",
"fetchfile",
"heartbeat",
"wbuf",
"race"
],
"related_bugs": [],
"occurrences": 1,
"last_seen": "2026-08-05"
}
]