Files
KF-OnlineJudge/judge/crates/coordinator/README.md
T

1.6 KiB
Raw Blame History

持久化协调器

kf-coordinator --config /etc/kf-judge/coordinator.json 读取 0600、有界、单链接 私有配置。listen 为 loopback 地址,database_url 仅数值 loopback 或绝对 Unix socket, 使用继承 kf_oj_coordinator 的普通数据库角色;Backend Alembic 是唯一迁移入口。

workers 配置各 Worker 的 UUID 与独立64位十六进制 token,platform_token 与它们不同;同时配置可信 admission、lease_seconds(5–300)、 recovery_seconds(1–60)。内部身份与浏览器会话、短期执行租约分离。 新增 tokio-postgres 0.7.15 负责有限数据库连接和事务,sha2 0.10.9 绑定摘要。 依赖方向仍为 coordinator → contracts,不调用沙箱或维护另一套 migration。

/health/live 表示存活,/health/ready 核对数据库和角色权限。内部接口先认证, 请求有体积/期限/并发上限;claim 原子生成 attempt、可信数据库时间租约与递增 fence, 提交后才返回领取权。阶段更新、续租和报告都核对当前绑定与令牌;报告的用例、attempt 和终态同一事务提交,原样重复可确认,修改/旧 attempt 拒绝覆盖。

取消与过期先撤销执行权并进入 cancelling;实际清理证明到达前不释放容量。 清理失败保留 cleanup_failed,只有已确认停止的基础设施失败可按有限预算重试。 恢复扫描每批最多16项,待领取事件投递30秒后仍无执行权时补偿重新通知。 Worker 的实际停止证明与执行隔离需独立 VM 验收;普通数据库测试不代表 Linux 安全验收。