From 2044dedb2f5ae310dfe71721a7eefe24bdde8d88 Mon Sep 17 00:00:00 2001 From: "lei.chen" Date: Fri, 14 Aug 2026 05:21:07 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20task=2012=20=E2=80=94=20apiserver=20cir?= =?UTF-8?q?cuit=20breaker=20done=20(2bbe894),=20recovery=20gap=20noted?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/left_scheduler_work.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/left_scheduler_work.md b/docs/left_scheduler_work.md index 376b18f5..a35833cd 100644 --- a/docs/left_scheduler_work.md +++ b/docs/left_scheduler_work.md @@ -89,9 +89,11 @@ spec 声称 36/36 任务完成,但 re-audit(research.md)发现缺陷。来 ### component-failover-adoption(14 任务:部分完成,2026-08-14) - **来源**:`.kiro/specs/component-failover-adoption/` - **关键结论**:requirements.md Background 明确 "**scheduler 没有任何运行时重连/rejoin 逻辑**——连的 controller 死后,scheduler 无法切换到其他候选"。 -- **✅ 已完成并集群验证(commit 2165b1a)**: - - **worker 无限重试**(controller_connector.c `checking_connection`):去掉 5 次上限,无限重试直到重连(连接器线程专用,不阻塞硬件/进程监控线程)。实测:杀 controller 后 3 worker 全部存活并持续重试,controller 回来后自动 rejoin。 +- **✅ 已完成并集群验证(commit 2165b1a + 2bbe894)**: + - **worker 无限重试**(controller_connector.c `checking_connection`):去掉 5 次上限,无限重试直到重连(连接器线程专用,不阻塞硬件/进程监控线程)。实测:杀 controller 后 3 worker 全部存活并持续重试,controller 回来后自动 rejoin。**永久故障**:持续重试不放弃(正确);**HA**:`xcecd_join_cluster` 已按 --peers 候选列表迭代(best-effort)。 - **apiserver rejoin**(clib.go `StartHeartbeat` + `xce_backend_rejoin`):心跳从失败转成功时显式 rejoin(HostRole_apiserver),恢复 push 通知。实测:controller 重启后日志 `backend re-joined controller after reconnect`。 + - **apiserver fail-fast 电路熔断(Req 4,commit 2bbe894)**:health.go 原子熔断 + `callBackend` 包 4 个写调用。degraded 时立即返回 `backend controller unavailable`,不调 lib;传输错误或 XCE NOMASTER/REDIRECT/NOT_READY/STANDBY 触发熔断;语义错误不触发。实测:杀 controller 后第 2 次提交 ~11ms 返回 fail-fast。7 单测。 + - **⚠️ 已知缺口**:**apiserver 心跳恢复在 controller 完整死亡+重启后不总是可靠**——lib transport reconnect 未稳定重建到新 controller(与 scheduler reconnect 同类,task #13)。当前需手动重启 apiserver 恢复(clean rejoin 正常)。 - **❌ scheduler reconnect 被真实 heap corruption 阻塞(未合入,已回退)**: - scheduler 的 rejoin(`xcecli_set_reconnect_handler` flag + 主循环 `xcecli_join`)**功能上能重连并 rejoin**(实测收到 config push),但 rejoin 后 ~3-8s **崩溃**。 - **诊断(2026-08-14 深入)**:ASAN 报 `bad-free`(释放 60 字节区域偏移 56 处的指针,`...66b8`,分配线程 T4/释放线程 T5,**全栈在 loader**);**debug 非 ASAN 构建同样崩**(`free(): invalid pointer` + core,gdb 显示 malloc_printerr 后栈被破坏)——**真实堆损坏,非 ASAN 假象**。