Repository navigation
config: put the default CI socket and dt file's trace in TMPDIR - #394
Merged
Merged
Conversation
Two iris --ci runs on one host share the default socket, /tmp/iris.sock. The second one removes the first's socket file before it binds, so the first keeps running and nobody can reach it. Parallel CI jobs, two users, or a test run next to a manual session all hit this, and the only way out was --ci-socket on every run. The default now comes from std::env::temp_dir(). A job that sets TMPDIR to its own directory gets its own socket. iris-ci and tools/iris-test compute the default the same way, so they still agree. The catch: iris and iris-ci meet by default only when they share TMPDIR. A failed connect to the default socket now says where it looked and how to name the path. Windows keeps its TCP default. macOS sets TMPDIR for every login, so there the default moves under /var/folders.
dt file with no path wrote /tmp/iris_trace.txt whatever TMPDIR said, so concurrent runs shared one file. On Windows that path means \tmp on the current drive, which need not exist. Use std::env::temp_dir(), as the CI socket does now.
jamesbraid
force-pushed
the
host-temp-dir
branch
from
November 2, 2026 03:01
bbe6f56 to
ebf8fe1
Compare
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.
Two
iris --ciprocesses on one host share/tmp/iris.sock. The second one removes the first's socket file before it binds (cleanup_socket_pathinci.rs), so the first keeps running and nobody can reach it. Parallel CI jobs, two users, or a test run next to a manual session all hit this. The only way out was--ci-socketon every run.The default socket and
dt file's default trace now come fromstd::env::temp_dir(). A job that setsTMPDIRto its own directory gets its own socket. iris-ci andtools/iris-testwork out the default the same way, so they still agree.The catch: iris and iris-ci meet by default only when they share
TMPDIR. A failed connect to the default socket now prints the path it tried and says to use the sameTMPDIRor pass the path (--socketor$IRIS_SOCKET). Scripts that pass the path are unaffected. Windows keeps its TCP default. macOS setsTMPDIRfor every login, so there the default socket moves under/var/folders.Not in this PR: the
--cidisk overlay still goes to/tmp. Guest paths are untouched.New tests cover the default socket, a socket in a given directory, the same with
TMPDIRset in a child process, the connect hint, and thedt filepath. Not run on macOS or Windows.