Stale Websocket-lanes recovers after restart

Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
This commit is contained in:
Alexey
2026-09-07 18:08:24 +03:00
parent 3693d1e2a8
commit 97c046757a
2 changed files with 28 additions and 4 deletions
+23
View File
@@ -177,3 +177,26 @@ fn ambiguous_commit_is_resolved_before_carrier_advance() {
.contains("addEventListener('pagehide',()=>fail('navigation')")
);
}
#[test]
fn committed_websocket_lane_escalates_only_pre_upgrade_failure() {
let page = render_page("HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH", 4);
assert!(page.body.contains("let upgraded=false,settled=false"));
assert!(page.body.contains(
"if(settled||closed||lanes.get(lane.id)!==lane||lane.socket!==opened)return"
));
assert!(page.body.contains(
"if(!upgraded){lane.socket=null;opened.close();recoveryController.recover(reason,null);return}"
));
assert!(page
.body
.contains("recoveryController.recover(reason,null);return}finishLane(lane,true)"));
assert!(page
.body
.contains("openTimer=setTimeout(()=>finishSocket('timeout'),websocketOpenMs)"));
assert!(page.body.contains("upgraded=true;lane.ready=true"));
assert!(page
.body
.contains("lane.socket.onclose=()=>finishSocket(upgraded?'network':'upgrade')"));
}