残留批次A:成员删除、PR needs_local_worker 落库、推送 DNS TOCTOU

- 成员删除:DELETE /projects/{id}/members/{user_id},限 owner 或
  全局管理员,禁删唯一 owner,记 remove_member 审计
  (AuthStore.remove_member + server 分发,沿用 PATCH 守卫口径)
- PR needs_local_worker 落库:非 local 扫到 queued 任务时 CAS
  写行状态为 needs_local_worker;claim/find_open 同步认该状态,
  标记过的行仍可被 local worker 认领、不被搁置;另修
  claim/find_open 对裸 sqlite3 tuple 行的 dict() 兜底
  (TypeError/ValueError)
- 推送 DNS TOCTOU:发送改走建连时解析+判段的连接类,解析
  一次、只拨判过的 IP,Host/SNI 仍为原域名;opener 直接构造
  以排除 ProxyHandler 改写(build_opener 默认会塞代理)
This commit is contained in:
host committed 2026-10-27 19:10:49 +00:00
1 parent 6e3eb7ba11
commit 9bb9a50e4e
10 files changed
+725 -38

No files matched your search

+1 -1
View File
@@ -308,7 +308,7 @@ class WorkerPrJobsTestCase(unittest.TestCase):
finally:
conn.close()
# P1:Docker worker 不再静默返回空,改为显式 needs_local_worker,
# 任务保持 queued 等 local worker 认领。
# 行状态持久化为 needs_local_worker、仍可被 local worker 认领。
jobs = worker._run_pr_jobs()
self.assertEqual(len(jobs), 1)
self.assertEqual(jobs[0]["status"], "needs_local_worker")