docs: mark bug-1494 fully fixed (worker rejoin slots update, bug-1511)

bug-1510 (dispatch-fail re-PEND, 6928f74) + bug-1511 (sched_update_workers
in-place update on re-push, 1a2bd3f) together close bug-1494. Update
left_scheduler_work.md and buglog.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
lei.chen 2026-08-11 06:15:11 +00:00
parent 1a2bd3f6a8
commit 7720d15cf9
3 changed files with 30 additions and 11 deletions

View file

@ -10,17 +10,13 @@
## 一、最紧急:当前影响集群的 bug
### 1. bug-1494 — 作业全部 PEND 不调度【部分已修复,2026-08-11】
- **状态**:部分解决。**子问题一(派发失败作业不重试)已修复(bug-1510,commit 6928f74)**;**子问题二(controller 重启后 worker/scheduler 不自愈重连)仍开放**。
### 1. bug-1494 — 作业全部 PEND 不调度【已修复,2026-08-11】
- **状态**:已解决(两个子问题均已修复并集群验证)。
- **来源**:`CLAUDE.md`、`docs/Scheduler-Agent-设计文档.md` §10.2b
- **子问题一(已修复)**:scheduler 在 worker 未就绪(down/joining)时派发,controller 拒绝(`dispatch_a_job_ worker t1 status=0x10000 ep nil`)并回 `jobDispatchFail` 通知,但 scheduler 的 `sched_handle_notify` 无此 case(丢弃)→ 作业保持 RUN 视图永不重选 → 永久 PEND(worker 恢复也不派发)。**修复**:handler.c 加 `jobDispatchFail` case + `sched_requeue_pend_job()`(重置 PEND + 重新入 fcfs pendJobs),作业持续重试直到 worker 就绪 → 派发 → EXIT。集群已验证。
- **子问题二(仍开放)**:controller 重启后,worker + scheduler **都不能自愈重连**,导致 scheduler 资源视图 slots=0 → 无法派发:
1. **worker 不重连**:controller 重启后 t1 保持 `UNAVAIL`(NCPUS/MAX_SLOT=-,HOST_TYPE=UNKNOWN),每 15s `Failed to send load indices error -1`,无 rejoin 尝试(worker 连接监控 `checking_connection` 未检测到 controller 重启)
2. **scheduler 无重连逻辑**:controller 重启后 scheduler 连接断开,重启后重新 join 时看到 t1 UNAVAIL、0 slots(`resource 0 (slots) total 0.000000 shortfall 1.0`)
3. scheduler 无法分配 → 全部 PEND(`main decision = (nil)`)
- **已排除**:不是 wbuf 污染(bug-1508 修复无效);不是 resources.yaml(缺 slots 定义但 slots 是内置资源,来自 host config `mxj`/`maxcpus`)
- **关联**:component-failover-adoption(scheduler 重连)+ worker 连接监控健壮性——**这是 P2.5/component-failover-adoption 的核心,尚未实现**
- **临时恢复**:全量重启 daemon(clean restart)可恢复,但集群无自愈能力
- **子问题一(已修复,commit 6928f74,bug-1510)**:scheduler 在 worker 未就绪(down/joining)时派发,controller 拒绝(`dispatch_a_job_ worker t1 status=0x10000 ep nil`)并回 `jobDispatchFail` 通知,但 scheduler 的 `sched_handle_notify` 无此 case(丢弃)→ 作业保持 RUN 视图永不重选 → 永久 PEND(worker 恢复也不派发)。**修复**:handler.c 加 `jobDispatchFail` case + `sched_requeue_pend_job()`(重置 PEND + 重新入 fcfs pendJobs)。
- **子问题二(已修复,commit 1a2bd3f)**:controller 重启 / worker 死亡后,scheduler 资源视图 slots=0 → 无法派发。**根因**:worker 死亡时 `mark_worker_unavail` 正确清零 slots=0;worker 重新 join(slots=8)时 controller 推送新 worker,但 scheduler 的 `sched_update_workers` → `sched_add_worker` 用 `key_add` 遇 EEXIST **丢弃新 worker**,scheduler 永久保留旧的 slots=0 → PEND 作业永不派发。**修复**:`sched_update_workers` 对已存在 worker **就地更新**(交换新 resvals/resInUse/status,释放旧对象),并 NULL-guard make_sched_worker。**集群验证**:scheduler 在 worker 死亡时启动(slots=0)→ worker 重新 join(slots=8)→ 之前卡住的 PEND 作业全部派发完成,无 ASAN。
- **关联**:scheduler 运行时重连(component-failover-adoption)仍为独立待办——scheduler 本身不会在 controller 重启后自动重连,需手动重启(但重连后 slots 恢复正常)。
- **临时恢复**:不再需要(worker 重新 join 即可恢复 slots)。
### 2. bug-1490 — apiserver control HTTP 500【已修复,2026-08-07】
- **状态**:已修复
@ -166,7 +162,7 @@ spec 声称 36/36 任务完成,但 re-audit(research.md)发现缺陷。来
| Bug | 影响 |
|-----|------|
| **bug-1490** | ✅ 已修复(c90e63e)。MCP 写工具(submit/hold/release/cancel)集群 E2E 验证通过;`scheduler_get_job` 的 CompConditions 过滤 bug 也已修复(0572740)。另修了部署缺口:/opt/xce/config 缺 rbac.yaml 导致 mcp API key 全 403 |
| **bug-1494** | 作业全 PEND 不调度,Agent 提交流程无法完成。**部分已修复(2026-08-11)**:派发失败作业重试(bug-1510)已解决;controller 重启后 worker/scheduler 不自愈重连仍开放(见第一节) |
| **bug-1494** | 作业全 PEND 不调度,Agent 提交流程无法完成。**已修复(2026-08-11)**:子问题一 dispatch-fail 重试(bug-1510)+ 子问题二 worker 重新 join 后 slots 不更新(见第一节) |
| **chatbot 过度建议** | ✅ 已缓解(3db216c):mcp-server 加 server instructions + 状态工具 report-only 描述,防止 LLM 把非 OK 状态当事故、主动给一堆排查建议 |
### 2. Phase 2:监控 + 纠错闭环(未开始,估 2-3 天)