fix: respect scoped simulator sets in ios runner#357
Conversation
…ct internals Address P1 review feedback: abortAllIosRunnerSessions now releases simulator-set redirect handles after killing processes, preventing stale locks from blocking subsequent scoped simulator commands. Simplify redirect internals: - Store redirect handle directly on session instead of wrapping in closure - Simplify sameResolvedPath to direct comparison instead of set intersection - Collapse double liveness check in clearStaleXcodebuildSimulatorSetLock https://claude.ai/code/session_01VsAUdPKbQoGbwvftBZtXfB
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cf2fbd89b4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| reconcileXcodebuildSimulatorSetRedirect({ | ||
| xctestDeviceSetPath, | ||
| backupPath, | ||
| }); | ||
| await releaseLock(); |
There was a problem hiding this comment.
Always release lock on redirect setup failures
If reconcileXcodebuildSimulatorSetRedirect(...) throws in this error path (for example due a filesystem permission or rename failure while restoring), releaseLock() is never reached, so the process leaves xctest-device-set.lock behind as an active lock owner. Subsequent iOS runner startups in the same process will then fail with lock timeout even though no redirect is active. Put lock release in a finally block so reconciliation errors cannot leak the lock.
Useful? React with 👍 / 👎.
No description provided.