Fix SSH session resume with bounded backpressure - #6650
Open
anton-107 wants to merge 2 commits into
Open
Conversation
DECO-28433: restore dropped-session reattachment without the full-window failure introduced by #6558 or the protocol degradation attempted in #6609. Wait for acknowledgments outside the write lock, send acknowledgments on a separate loop, and resume reads before replaying full windows. Negotiate a new protocol version to avoid enabling resume against the faulty server. Preserve final payload before EOF, distinguish session completion from a dropped socket, retry dropped handshakes, and stop retrying expired sessions. Regression tests reproduce the original 1 MiB truncation, an acknowledgment deadlock during handover, and a simultaneous replay deadlock. They verify 8 MiB transfers in both directions through handover and repeated resets. Validation: SSH unit and local acceptance suites; race tests for changed SSH and telemetry packages; targeted lint; Windows test compilation. Live driver-proxy validation remains required before release.
Contributor
Approval status: pending
|
Collaborator
Integration test reportCommit: 445ec66
Top 3 slowest tests (at least 2 minutes):
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
Restore SSH session resume with bounded backpressure: a full replay window pauses the sender until acknowledgments free space. Separate acknowledgment handling and concurrent replay keep handover from deadlocking. Negotiate protocol version 2, preserve final bytes before EOF, and bound reconnect retries and abandoned-session retention.
Why
Transient websocket resets terminate customers' active terminal and IDE sessions. #6558 truncated healthy transfers when its 1 MiB replay window filled; #6609 would disable resume during large transfers and mishandle subsequent acknowledgments. This fix keeps resume enabled while applying backpressure.
Tests
meta-harness/omnigent, completion SIGPIPE, and bundle test timeouts; the full suite is not green.This PR was written by Codex.