建立无状态 worker reconcile 边界

This commit is contained in:
2026-09-20 18:11:57 +00:00
parent 3f336310af
commit 22dc3fef63
5 changed files with 247 additions and 3 deletions
+6 -2
View File
@@ -35,8 +35,12 @@ dynamic-runner scheduler
OpenBao 等资源服务继续是唯一授权决策点。
- scheduler 的 runner registration credential 不进入 executor;executor 只得到执行
当前 task 所需的短期 lease/capability。
- task ACK、心跳和结果必须能够跨 scheduler 重启恢复;NATS 可以继续作为内部 handoff,
但不是 Gitea 任务事实来源。
- JetStream 只持久化和投递 assignment,不保存 executor 生命周期状态。Pod labels/annotations
与 OpenSandbox metadata 是后端运行状态的权威来源,Gitea 是 task 终态的权威来源。
- worker 按稳定 assignment ID reconcile 后端资源,进程内只保留并发控制等可丢弃状态;
不新增数据库,也不依赖内存中的 runner-to-executor 映射。
- 结果处理顺序固定为回报 Gitea、清理后端、ACK assignment;重投时先查询 Gitea 终态,
从而关闭后端已删除但消息尚未 ACK 的崩溃窗口。
- Pod 与 VM 共享 task/executor 协议,只有环境创建和销毁实现不同。
## 实现顺序