Repository navigation
fix(node-tests): wait for clone Git termination before resuming HTTPS - #699
Closed
wanglongan587 wants to merge 2 commits into
Closed
wanglongan587 wants to merge 2 commits into
wanglongan587 wants to merge 2 commits into
Conversation
The killed-clone test resumed the paused remote right after SIGKILL. The guardian learns about the owner's exit only at its next reconciliation and terminates Git then. On a loaded runner the blocked clone can finish inside that window; recovery reads a real exit code and, per the terminated-attempt decision, verifies and reports CloneReady instead of Interrupted. Pin the fixture's managed Git and resume the remote only after that process exited, so the test deterministically exercises the terminated path.
The single-node acceptance test duplicated the procfs scan that pins the fixture's managed Git. Use the fixture helper so both tests observe the same identity.
Contributor
|
Superseded by 3bef098 (#681, merged 2026-10-21): |
Contributor
Author
|
Closing without merge — confirming the check above against
Closing this PR; the run is reported and closed in ora-space/circus#323, and the parent record in ora-space/circus#311. |
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
killed_clone_recovers_original_run_without_redispatchresumed the paused HTTPS remote immediately after SIGKILL. The guardian only learns about the owner's exit at its next reconciliation (50 ms cadence) and terminates the managed Git then. On a loaded runner the blocked clone can finish inside that window, so recovery reads a real exit code 0, verifies the checkout, and reportsCloneReady— the classification the terminated-attempt decision requires for an exit code. The test assertedInterrupted, which made CI fail intermittently for unrelated changes: the same head4f628566failed once (job) and passed on rerun (run).Change
Fixture::live_git()to pin the fixture's managed Git from procfs and observe its termination;git.has_exited()before resuming the remote, so recovery observes a confirmed termination and the test deterministically exercisesInterrupted;ADR: no ADR changes. The behavior under test is specified by
decisions/node/repository/20260925-terminated-clone-attempt-fails-as-interrupted.md(implemented); this only makes its test deterministic and leaves the "Git exits before termination" race handled exactly as that decision describes.Refs ora-space/circus#323
Evidence
Completed(Clone(CloneReady(...))), matching the CI failure. With the guardian running and the new barrier, the same test returnsInterrupted.standalonesuite (cargo test -p ora-node --test standalone -- --test-threads 4: 44 passed, 1 ignored). One earlier local run hit an unrelated websocket takeover flake (controller_session_over_websocket_takes_over_clone_and_keeps_single_session, close code 1011) once and passed on rerun.cargo fmt -p ora-node -- --checkpasses.Merge Danger
Door: none. Test-only change: no runtime, persistence, contract or filesystem-layout changes.