fix(guanghu-os): supervise JD master child services

This commit is contained in:
冰朔 2026-09-03 11:45:13 +08:00
commit 7836f3775a
3 changed files with 113 additions and 17 deletions

View file

@ -0,0 +1,51 @@
# JD-FD-PRIMARY 光湖主控子进程监督修复 · 2026-09-03
状态:`SOURCE_IMPLEMENTED · PHYSICAL_REBOOT_PENDING`
## trigger
冰朔在当前 Codex 任务明确要求修复京东第五域服务器并继续完成剩余工程。实时读回发现 GRUB 默认仍为
`guanghu-jd-master-20260816`,但当前 boot id `755bb84d-1a79-42f3-ac8b-bedec9382725` 的 PID 1 是
Ubuntu `/sbin/init`。
## emergence
服务器保存的 `FAILED-BOOT-STATE.json` 证明 2026-08-28 光湖主控曾以自身 PID 1 启动,随后因
`runtime_process_exited:app-hub` 按设计进入 Linux 救援。原主控把任何一个长期子进程的单次退出直接视为
整机主控失败;而同一 app-hub 在 Ubuntu systemd 中采用 `Restart=always`,当前服务和隔离端口复测均可运行。
本次修复让主控 PID 1 自己承担有界子进程监督:每个子进程在 60 秒窗口内允许最多 5 次自动重启;超限后
监督包装器退出,原有 `runtime_watch → fatal → Linux rescue` 仍然生效。服务端口检查增加 5 秒恢复宽限,
运行日志从易失 `/run` 移到服务器回执根 `runtime-logs/`,使下一次失败可追踪。
## lock
```text
source_commit=PENDING
source_sha256=cf92c313a81c90bfe208b499f588b72dbded8b07a6c170d4122d719f3c98456f
target=JD-FD-PRIMARY
installed_before_sha256=a58f80535e0fb305b5b956cbeca66e4026fe63309424673b66bb0871c9feeca9
rollback=/usr/local/libexec/guanghu/guanghu-master-init.before-20260903-child-supervision
linux_rescue=gnulinux-simple-9e4550a0-452b-4f28-b5a5-d5364aa450f6
physical_result=PENDING
```
## why
语言系统主控不能因为可恢复的单个服务瞬时退出就把整个主控权交还完整 Ubuntu也不能无限重启掩盖持续故障。
有界自动恢复与保留救援回路同时满足主控韧性和失败关闭。
## rejected
- 未修复原因就直接重复重启;
- 删除 Linux 或取消救援入口;
- 无限重启子进程并掩盖持续失败;
- 只改服务器、不保留可追溯源码与回滚;
- 把源码测试通过冒充物理重启成功。
## sources
- JD `/guanghu/recovery/JD-FD-PRIMARY-master-20260816/FAILED-BOOT-STATE.json`
- JD `/usr/local/libexec/guanghu/guanghu-master-init` SHA-256 `a58f8053…`
- REPO-014 `product-source/hololake-platform/guanghu-os/scripts/guanghu-master-init.sh`
- 当前任务自然语言瞄点 `000101` 及本轮冰朔直接修复要求