123 lines
2.9 KiB
Markdown
123 lines
2.9 KiB
Markdown
# HANDOFF 2026-04-19 03:32
|
|
|
|
## 本轮做了什么
|
|
|
|
这轮没有扩功能,没有进新页面,也没有碰发布动作。
|
|
|
|
只做了两件事:
|
|
|
|
1. 把检测执行停滞的判断继续收紧
|
|
2. 对 worker 控制消息链补上最小代码修复
|
|
|
|
## 当前最新判断
|
|
|
|
当前不是接管问题,也不是日志回传问题。
|
|
|
|
当前真实状态是:
|
|
|
|
- `remote_access_ready = 3/3`
|
|
- `log_sync_state = full_capture`
|
|
- 大陆首批结果同步已经成功过
|
|
- 但检测任务没有持续前进
|
|
|
|
这个停滞目前有两层原因:
|
|
|
|
### 第一层:已确认的现场阻塞
|
|
|
|
- `mainland-controller-01` 代理池刷新后 `0 available`
|
|
- 代理源可以拉到原始代理
|
|
- 但抽样校验全部失败
|
|
|
|
这会直接影响 controller 侧吞吐。
|
|
|
|
### 第二层:刚补好的代码风险
|
|
|
|
之前存在一个运行态风险:
|
|
|
|
- 控制面发 `start_detection`
|
|
- Redis `publish` 成功
|
|
- 但 worker 如果漏收 pubsub 消息
|
|
- pending 指令可能不会在运行态被再次消费
|
|
|
|
这会造成:
|
|
|
|
- 页面像是发起成功了
|
|
- 但 worker 不一定真的继续推进
|
|
|
|
现在这处代码缺口已经补上,但还没有完成线上部署验证。
|
|
|
|
## 本轮代码修复
|
|
|
|
### 1. `worker_control_service`
|
|
|
|
文件:
|
|
|
|
- `domain-api/app/services/worker_control_service.py`
|
|
|
|
修复:
|
|
|
|
- 每条 worker 控制消息补 `request_id`
|
|
- Redis `publish` 和 pending fallback 复用同一条消息体
|
|
|
|
### 2. `detect_worker`
|
|
|
|
文件:
|
|
|
|
- `domainCheck/detect_worker.py`
|
|
|
|
修复:
|
|
|
|
- 运行态心跳里周期性补偿消费 pending 控制消息
|
|
- 真正收到控制消息后,按 `request_id` 清理 pending
|
|
|
|
### 3. 新增测试
|
|
|
|
文件:
|
|
|
|
- `domain-api/tests/test_worker_control_service.py`
|
|
|
|
验证目标:
|
|
|
|
- 确保 `send_worker_command(...)` 会生成并持久化 `request_id`
|
|
|
|
## 本地验证结果
|
|
|
|
已通过:
|
|
|
|
```bash
|
|
PYTHONPATH=/www/wwwroot/getDomain/domain-api /opt/domaincheck/domainCheck/.venv/bin/python -m unittest domain-api/tests/test_worker_control_service.py
|
|
python -m py_compile domainCheck/detect_worker.py domain-api/app/services/worker_control_service.py
|
|
```
|
|
|
|
## 下一轮唯一该做什么
|
|
|
|
下一轮不要发散,只做最小部署验证:
|
|
|
|
1. 大陆节点拉最新代码
|
|
2. 重启 `domaincheck-worker`
|
|
3. 复查:
|
|
- `/api/v1/detect/job/active`
|
|
- `/api/v1/runtime/sync-summary`
|
|
- controller / worker `scene-log`
|
|
- 必要时再采集 `domaincheck-worker` 日志
|
|
4. 只判断两件事:
|
|
- 修复上线后,检测任务是否恢复推进
|
|
- 如果仍不推进,是否只剩 controller 代理池 `0 available` 这个现场阻塞
|
|
|
|
## 现在不要做什么
|
|
|
|
- 不做新页面
|
|
- 不做新模块
|
|
- 不做控制面增强
|
|
- 不做发布动作
|
|
- 不把问题再泛化成“日志没回来”或“接管没完成”
|
|
|
|
## 一句话结论
|
|
|
|
当前最准确的状态是:
|
|
|
|
- 接管和同步基本已经闭合
|
|
- 检测执行停滞仍然存在
|
|
- worker 控制消息补偿链已补代码
|
|
- 下一步只剩“拉代码重启 worker 后看任务是否恢复推进”
|