diff --git a/memrelay-manifest.json b/memrelay-manifest.json index 132428f..9c92b71 100644 --- a/memrelay-manifest.json +++ b/memrelay-manifest.json @@ -135,6 +135,10 @@ { "kind": "directory", "value": "e:/code/nixmsg-wt/r2-h" + }, + { + "kind": "directory", + "value": "e:/code/nixmsg-wt/r2-k" } ], "created_at": "2026-09-29T15:42:27.642284+00:00", diff --git a/projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-30 07-24-38 UTC [fd8b91d2c7].md b/projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-30 07-24-38 UTC [fd8b91d2c7].md new file mode 100644 index 0000000..a5d71dc --- /dev/null +++ b/projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-30 07-24-38 UTC [fd8b91d2c7].md @@ -0,0 +1,67 @@ +--- +title: Checkpoint 2026-09-30 07:24:38 UTC [fd8b91d2c7] +type: checkpoint +permalink: main/projects/25464650-ed5d-440e-b362-190f2852d451/checkpoint-2026-09-30-07-24-38-utc-fd8b91d2c7 +stable_id: 0e41749e-828a-45e2-a309-5681dd2693e9 +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: chk-broker-b01-b12-20260930-1515 +created_at: '2026-09-30T07:24:38.343182+00:00' +updated_at: '2026-09-30T07:24:38.343182+00:00' +tags: +- ready-to-merge +- lane/broker +- B-01 +- B-02 +- B-03 +- B-04 +- B-05 +- B-06 +- B-07 +- B-08 +- B-09 +- B-10 +- B-11 +- B-12 +--- + +## broker 复审 B-01..B-12 已完成并推送(未 merge main) + +- **工作树**:`E:\\code\\NixMsg-wt\\r2-b` +- **分支**:`feat/fix-broker-b01-b12`(已普通推送到 origin,非 force) +- **基于**:`origin/main` @ `4059a15` +- **未 merge main**,未关 Gitea issues + +## 提交 +- `da43385` fix: 在 OnConnect 把 mochi 发送配额置 0 规避死锁(B-01 #8) +- `b5b63ed` fix: 大帧名额按 PacketID 在 PUBACK 与断线时归还(B-02 #9) +- `4216072` fix: 认证失败不泄漏连接表并脱敏 mochi 整包日志(B-05 #12、B-07 #14) +- `8b84584` fix: 完成 broker 复审 B-03 至 B-12 + +## 关键实现 +- B-03:每连接下行队列 256 帧/16MiB + 发送 goroutine;满则 ErrBackpressure。Publish 失败会重试以免静默抽空队列。 +- B-06:PublishDown 只发给当前连接;未订 down 返回 ErrNotSubscribed;导出 EffectivePayloadLimit;uplink.publishResp 使用它;旧连接 superseded。 +- B-04:PublishThenDisconnect 入队,OnPacketSent 后再 Disconnect。logout/fatalKick 走该原语。serve 里 identity.New ConnControl=nil。 +- B-09:broker 与 appUplink 按端加锁;uplink 握手表,仅已 hello 连接按当前连接通知消息线。未改 presence/app.go。 +- B-10:密码登录条件 UPDATE;hello TokenMatchesDB。未改 identity/self.go。 +- B-11:闲置取 used/online/offline 较新者,在线视为未闲置。 +- B-12:Authenticate 30s 超时;每端 Verify 并发 2。未改 auth 池/PHC。 +- B-08:Broker.Shutdown 发 MQTT 5 0x8B 后 Close。serve 在 listener Close 前调用。HTTP Shutdown 留给 L-03。 + +## 验证 +- `go test ./internal/broker/ -count=1` 通过(约 6.2s) +- `go test ./cmd/nixmsg/ -count=1` 通过(约 4.9s) + +## 跳过(按裁定) +- 不改 identity/lifecycle.go、presence/app.go、auth pool/phc、listener L-03 +- 不关 issues,不 merge main + +## 下一步 +总控审阅后 ff-merge;L-03 可接 B-08 Shutdown。不要删 `E:\\code\\NixMsg-wt\\fix3`。 + +## 给下个会话 +复用工作树 `E:\\code\\NixMsg-wt\\r2-b` 与已推送分支 `feat/fix-broker-b01-b12`。不要在 e:\\code\\NixMsg 主工作区改。 \ No newline at end of file