136 lines
3.4 KiB
Markdown
136 lines
3.4 KiB
Markdown
# HANDOFF 2026-04-19 00:50 CST
|
||
|
||
## 本轮目标
|
||
|
||
只处理 acceptance 队列不消费问题,不扩功能,不新增页面或专题文档。
|
||
|
||
## 本轮完成
|
||
|
||
### 1. 定位并修复 acceptance 队列卡死
|
||
|
||
定位结果:
|
||
|
||
- 两台大陆节点都在持续请求 `/api/v1/ops/agent/pull?limit=1`
|
||
- 控制面收到请求,但 acceptance job 长时间停留在 `queued`
|
||
- 数据库中存在大量 `idle in transaction`
|
||
- 事务卡在:
|
||
- `UPDATE ops_job_steps ...`
|
||
- 随后又在新连接里 `INSERT INTO ops_job_events ...`
|
||
|
||
代码修复:
|
||
|
||
- 文件:
|
||
- [domain-api/app/services/ops_agent_service.py](/www/wwwroot/getDomain/domain-api/app/services/ops_agent_service.py)
|
||
- 修改点:
|
||
- `agent_pull_jobs`
|
||
- `agent_mark_job_started`
|
||
- `agent_complete_job`
|
||
- 修复方式:
|
||
- 把 `append_ops_job_event(...)` 从事务内部移到 `conn.commit()` 之后执行
|
||
|
||
### 2. 补充最小回归测试
|
||
|
||
- 文件:
|
||
- [domain-api/tests/test_ops_agent_service.py](/www/wwwroot/getDomain/domain-api/tests/test_ops_agent_service.py)
|
||
- 新增测试:
|
||
- `test_agent_pull_jobs_commits_before_appending_event`
|
||
- `test_agent_mark_job_started_commits_before_appending_event`
|
||
- `test_agent_complete_job_commits_before_appending_event`
|
||
- 验证结果:
|
||
- `cd /www/wwwroot/getDomain/domain-api && /opt/domaincheck/domainCheck/.venv/bin/python -m unittest tests.test_ops_agent_service -q`
|
||
- `Ran 27 tests ... OK`
|
||
|
||
### 3. 运行态验证
|
||
|
||
- `domaincheck-api` 已完成强制切换到新版本进程
|
||
- 新进程:
|
||
- `MainPID = 614403`
|
||
- 运行态日志已确认:
|
||
- `job 36 / 41` 开始执行
|
||
- 已出现 `start / events / complete`
|
||
|
||
## 当前 acceptance 结果
|
||
|
||
### `mainland-worker-01`
|
||
|
||
- run:
|
||
- `pbr-137e8b258b`
|
||
- 当前状态:
|
||
- `attention`
|
||
- 结果:
|
||
- `4 success + 1 failed`
|
||
- 唯一失败步骤:
|
||
- `node_agent_logs`
|
||
- 失败原因:
|
||
- `No journal files were opened due to insufficient permissions`
|
||
|
||
### `mainland-controller-01`
|
||
|
||
- run:
|
||
- `pbr-bfed43ea46`
|
||
- 当前状态:
|
||
- `attention`
|
||
- 结果:
|
||
- `4 success + 1 failed`
|
||
- 唯一失败步骤:
|
||
- `node_agent_logs`
|
||
- 失败原因:
|
||
- `No journal files were opened due to insufficient permissions`
|
||
|
||
## 当前总检状态
|
||
|
||
`go-live-summary`:
|
||
|
||
- `go_live_status = attention`
|
||
- `publish_status = attention`
|
||
- `stack_status = attention`
|
||
- `launchpad_status = attention`
|
||
- `log_sync_state = full_capture`
|
||
|
||
`stack-diagnosis`:
|
||
|
||
- `surface_status = healthy`
|
||
- `automation_status = attention`
|
||
- `stack_status = attention`
|
||
- `issue_total = 1`
|
||
- `blocking_issue_total = 0`
|
||
|
||
## 当前最高优先级
|
||
|
||
唯一最高优先级:
|
||
|
||
- 修复远端 Node Agent 读取 `journalctl` 的权限
|
||
|
||
## 当前是否可上线签收
|
||
|
||
结论:
|
||
|
||
- 还不可上线签收
|
||
|
||
唯一剩余阻塞:
|
||
|
||
- 两条 acceptance run 都因为 `node_agent_logs` 权限不足而未全绿
|
||
|
||
## 下一轮若继续,必须先做什么
|
||
|
||
只做这一件事:
|
||
|
||
- 处理 `domaincheck-node-agent` 所在服务账号的 journal 读取权限
|
||
|
||
推荐最小方向:
|
||
|
||
- 让运行 Node Agent 的账号具备读取 systemd journal 的权限
|
||
- 然后重跑 acceptance,或只补采失败日志步骤
|
||
|
||
## 现在不要做的事情
|
||
|
||
- 不要回退这次热修复
|
||
- 不要重新 bootstrap
|
||
- 不要重装大陆机器
|
||
- 不要扩控制面功能
|
||
- 不要进入正式发布
|
||
|
||
## 本轮一句话结论
|
||
|
||
接管主链已经打通,acceptance 队列事务 bug 已修复;当前只剩远端 `journalctl` 权限问题,解决后即可继续冲刺上线签收。
|