Repository navigation
fix(verify): bound run timeouts and keep doctor checks when a probe fails - #1153
Merged
Merged
Conversation
…ails - exec: send SIGKILL 2 s after SIGTERM when a command times out, and count a live pid as running when ps itself fails. - doctor --live: a failed read while ending the run becomes a failed live-stop check, and the session token is still removed. - Android release: stop the emulator's group with terminateGroup, so a group that is already gone no longer leaves the slot claimed. - session agent: match the recorder's start words case-insensitively. - e2e inputs: refuse a dev server with a borrowed Android emulator. The shared files match clerk-ios. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mikepitre
added a commit
to clerk/javascript
that referenced
this pull request
Oct 19, 2026
Copies the shared harness fixes from clerk/clerk-ios#738 and the Android lane fix from clerk/clerk-android#1153: - exec: SIGKILL 2 s after SIGTERM on timeout; a failed ps no longer reads as an exited process. - doctor --live: a failed read while ending the run becomes a failed live-stop check, and the session token is still removed. - iOS doctor skips lane-ports when Xcode is missing; Android release ignores ESRCH so the slot is freed. - session agent matches the recorder's start words case-insensitively. - e2e inputs refuse a dev server with a borrowed Android emulator. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
…s its output run() resolved only on close, and close waits for the stdout and stderr pipes. A command that leaves a background child holding those pipes kept the timeout pending until that child exited, even after SIGKILL. The kill timer now destroys both streams, so the call returns 124. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Why
CodeRabbit reviewed the Expo copy of the shared e2e harness in clerk/javascript#10236 and found five defects that also exist here, since the files are shared byte for byte. The shared part matches the clerk-ios change.
What changed
runsent SIGTERM once on timeout. A child that ignores SIGTERM kept the promise pending, sotimeoutMsset no bound. It now sends SIGKILL 2 s later.isRunningtreated anypsfailure as "exited". It now returns false only whenpsexits 1 (no such pid).doctor --liveended the run insidefinallywithout a catch. A failed run read there threw away every check and left the session token on disk. The failure is now a failedlive-stopcheck.killEmulatorcalledprocess.kill(-pid, 'SIGTERM')directly. If the emulator's group was gone by then, ESRCH skippedfreeSlotand left the slot claimed. It now usesterminateGroup, which already ignores ESRCH.printedlowercased the recorder output but not the words it waited for.readTargetnow refusesCLERK_E2E_DEV_SERVERwith a borrowed Android emulator, whose dev-client app would start throughadbon this machine.Scope
The shared files are byte-identical in clerk-ios and the Expo stack, and
MANIFESTis regenerated. The Android change is in the platform file this repo shares with Expo.Verification
mainand passes here.tscis clean.🤖 Generated with Claude Code
Summary by CodeRabbit