基线 origin/main 0c9b459。K-00 约定:首次连接超时或握手失败应停止重连,并向 connect() 返回未连接。
origin/main
0c9b459
connect()
_handshake_error
_stop_reconnect
busy
handshakeError
stopReconnect
wantConnected && !stopReconnect
connect.go
client.ts
另有一处低优先级、同一 Java 文件:rate_limited 把 inflightSends 减了两次。Python 只减一次。本地「同时在途不超过 100」会松一档。
rate_limited
inflightSends
sdk/python/src/nixmsg/client.py
sdk/java/src/main/java/asia/asio/nixmsg/Client.java
首次 connect() 在 hello / 握手失败或超时后,置停止重连,返回 not_connected(不要用 busy 表示没建起会话)。后台循环看到该标志后不得再连。应用再次调用 connect() 才重新开始。
not_connected
Java 的 rate_limited 与 Python 一样只减一次在途计数,然后换新 rid 再排队。
rid
补测试:首次 hello 失败后不再自动重连;再次 connect() 可以重新连。Java 限速一次后在途计数只减 1。
只改 sdk/python/ 与 sdk/java/。不要改 Go / JS 的重连公式。偏差节 ### 复审修复 R3-06。
sdk/python/
sdk/java/
### 复审修复 R3-06
HEAD: 4d2f6f0d03f4c098e759e452a880df568bc44640
4d2f6f0d03f4c098e759e452a880df568bc44640
mvn test -Dtest=K00Test
unittest tests.test_k00 tests.test_client
已合入 main:9c6de00 (#70);当前 origin/main HEAD 2d1dfd7。
9c6de00
2d1dfd7
No dependencies set.
The note is not visible to the blocked user.
现象
基线
origin/main0c9b459。K-00 约定:首次连接超时或握手失败应停止重连,并向connect()返回未连接。connect()看到_handshake_error直接抛错,没有置_stop_reconnect。等 CONNACK 超时的路径会停,hello 失败这条不会。工作线程仍按退避重连,应用以为没连上,随后却可能变成在线并收到下行。内部超时文案还是busy。handshakeError就抛出,不走把stopReconnect设为停止的分支。循环只要wantConnected && !stopReconnect就继续连。connect.go与 JSclient.ts的首次失败会拆掉连接并停止重连。另有一处低优先级、同一 Java 文件:
rate_limited把inflightSends减了两次。Python 只减一次。本地「同时在途不超过 100」会松一档。位置
sdk/python/src/nixmsg/client.py:connect()对_handshake_error的处理,以及重连循环sdk/java/src/main/java/asia/asio/nixmsg/Client.java:首次握手失败与rate_limited的 inflight 计数方案
首次
connect()在 hello / 握手失败或超时后,置停止重连,返回not_connected(不要用busy表示没建起会话)。后台循环看到该标志后不得再连。应用再次调用connect()才重新开始。Java 的
rate_limited与 Python 一样只减一次在途计数,然后换新rid再排队。补测试:首次 hello 失败后不再自动重连;再次
connect()可以重新连。Java 限速一次后在途计数只减 1。约束
只改
sdk/python/与sdk/java/。不要改 Go / JS 的重连公式。偏差节### 复审修复 R3-06。R3-06 / #70 ??(eat/fix-r3-70-py-java)
HEAD:
4d2f6f0d03f4c098e759e452a880df568bc44640??
connect()??not_connected;??connect()????busy???????rate_limited??????????
mvn test -Dtest=K00Test:18 ??(??????????????? 1)unittest tests.test_k00 tests.test_client(FakeTransport)21 ??已合入 main:
9c6de00(#70);当前 origin/main HEAD2d1dfd7。