fix: harden SSH tunnel lifecycle#4145
Draft
NotReliable wants to merge 1 commit into
Draft
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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.
Summary
Fixes #4144.
Why
The previous one-second request timeout and two-second reuse window could classify a temporarily slow forward as stale. Repeated callers would then replace the forward, increasing the chance that old child processes outlived the connection that created them.
This keeps the existing pending-map serialization, but gives a reusable tunnel a realistic bounded readiness window and makes external-backend ownership explicit in finalization.
Verification
pnpm --filter @t3tools/ssh test— 27 passedpnpm exec vp run --filter @t3tools/ssh typecheck— passedpnpm exec vp check— passed (10 pre-existing unrelated React warnings)The repository-wide
vp run typecheckplanner was also attempted, but this filtered checkout did not have the unrelated Marketing workspace'sastroexecutable linked. The affected SSH package typecheck above is clean.Note
Harden SSH tunnel lifecycle to prevent duplicate tunnels and skip remote stop for external backends
ensureEnvironmentnow waits up to 15s (was 2s) for an existing tunnel's HTTP endpoint before deciding not to reuse it, preventing spurious duplicate tunnel creation under concurrency.stopRemoteServerwhenremoteServerKindis'external', only terminating the local tunnel process.SSH_READY_PROBE_TIMEOUT_MSis increased from 1,000ms to 5,000ms;SSH_EXISTING_TUNNEL_READY_TIMEOUT_MS(15,000ms) is introduced as a distinct constant.Macroscope summarized 39db8ec.