diff --git a/projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-30 09-28-54 UTC [3c19908d0f].md b/projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-30 09-28-54 UTC [3c19908d0f].md new file mode 100644 index 0000000..3c5de53 --- /dev/null +++ b/projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-30 09-28-54 UTC [3c19908d0f].md @@ -0,0 +1,43 @@ +--- +title: Checkpoint 2026-09-30 09:28:54 UTC [3c19908d0f] +type: checkpoint +permalink: main/projects/25464650-ed5d-440e-b362-190f2852d451/checkpoint-2026-09-30-09-28-54-utc-3c19908d0f +stable_id: 0013a18c-bf1b-40b5-a9cb-bbd3ad6e6848 +scope: project +memory_type: checkpoint +project_id: 25464650-ed5d-440e-b362-190f2852d451 +usage_profile_id: 0c9feb46-d06e-43cd-9ef0-c5813c84a998 +status: active +revision: 1 +request_id: r3-67-queue-close-deadlock-20260930 +created_at: '2026-09-30T09:28:54.981235+00:00' +updated_at: '2026-09-30T09:28:54.981235+00:00' +tags: +- ready-to-merge +- r3-03 +- issue-67 +--- + +# 检查点:R3-03 / issue #67 写队列 Close 死锁已修 + +## 完成 +- 分支 `feat/fix-r3-67-queue`,工作树 `E:/code/NixMsg-wt/r3-67`(非主工作树) +- HEAD `eb4cb7c655e5bb6796c2514aaa4a714d0b4c3b3e`:`fix: 写队列满时 Close 不再与 enqueue 死锁` +- 已推送 origin;已在 Gitea #67 评论(comment 485) +- 未合 main + +## 关键实现 +- `Queue.closing`:Close 先 Swap(closed)+close(closing),唤醒持读锁堵在满通道上的 enqueue +- enqueue 的 select 同时等 q.ch / closing / ctx.Done() +- 再 sendMu.Lock 后 close(q.ch),等 loop 退出;不向已关闭 channel 发送 +- DEVIATIONS 末尾 `### 复审修复 R3-03` + +## 验证 +- `go test ./internal/store/ -count=1 -run "Queue|WriteQueue"` 通过 +- 新增:满通道+堵住写端时 Close 能解开 enqueue;超时 Drain 短时返回 + +## 下一步 +- 总控审阅后 ff-only 合入 main + +## 给下个会话 +- 只改了 queue.go / queue_test.go / DEVIATIONS R3-03;不改迁移