fix: 首次握手失败停止重连并修正 Java 限速在途计数
This commit is contained in:
@@ -1757,3 +1757,13 @@ issue #3 未关闭,`feat/fix-3-downlink-deadlock` 未合入 `main`。下面是
|
||||
- 原因:原先只换 `rid` 并 `return`,连接未断时 `hello` 不再走,队列停泵,`send()` Promise 永不结束。
|
||||
- 备选方案:按 `rate_limited` 同一条的退避再泵(否决本波,连接仍在线时立即重交更贴切,且避免与已有等待叠乘抖动)。
|
||||
- 影响:仅 `sdk/js`;假传输失败一次后会再次上行且 `rid` 已变。
|
||||
|
||||
### 复审修复 R3-06
|
||||
|
||||
1. **Python/Java 首次握手失败应停止重连;Java rate_limited 在途计数只减一次**
|
||||
- 日期:2026-09-30
|
||||
- 原条款:DEVELOPMENT 第 9 节附录「首次连接超时或握手失败应停止重连,并向 connect() 返回未连接」;issue #70。
|
||||
- 实际做法:`sdk/python` 的 `connect()` 在 `_handshake_error` 或非 ONLINE 终态时置 `_stop_reconnect`/`_want_connected=False`;内部连接/握手超时改用 `not_connected`(不再用 `busy`)。`sdk/java` 的 `connectSync` 在 `handshakeError` 时同样置 `stopReconnect`;`rate_limited` 路径去掉第二次 `inflightSends--`,只换新 rid 再排队。Python `transport.py` 将 paho 改为惰性导入,便于本机无 paho 时仍跑 FakeTransport 单测。不改 Go/JS 重连公式。
|
||||
- 原因:原先抛错后工作线程仍按退避重连;Java 限速把在途计数减了两次。
|
||||
- 备选方案:在后台 `_attempt_connect`/`attemptConnect` 内首次失败即停(否决:应用再次 `connect()` 才应恢复,标志应在对外 `connect` 失败路径统一置位)。
|
||||
- 影响:仅 `sdk/python`、`sdk/java`;应用需再次调用 `connect()` 才会重连。
|
||||
|
||||
Reference in New Issue
Block a user