Repository navigation
features: each run stages its Features in a folder of its own - #55
Merged
Merged
Conversation
The features folder is <cacheFolder>/container-features/<cliVersion>-<ms>, TS createFeaturesTempFolder's name, made with MkdirAll. Two runs started in the same millisecond shared it, and one run's realignFeatureDirs renamed and removed the other's .stage- folders: "stage feature h_0: lstat .../.stage-0: no such file or directory", which failed main's parity job on 2026-11-07 and 2026-11-08. The folder is now created with Mkdir, and a name another run holds moves to the next millisecond. The compose path that made the folder by hand goes through the same function. 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.
main's
parityjob failed on 2026-11-07 (run) and 2026-11-08 (run) on a differentread-configuration.features-configuration-local-feature-*case each time, with Go exiting 1:The features folder is
<cacheFolder>/container-features/<cliVersion>-<ms>(TScreateFeaturesTempFolder's name), made withMkdirAll. The parity cases run in parallel, so two Go runs started in the same millisecond shared the folder. Each fetched its Features into.stage-N, and the first one'srealignFeatureDirsrenamed.stage-0and removed the leftover.stage-*folders, which included the other run's. TS writes straight into the consecutiveId folders, so in TS a shared name was harmless. The.stage-folders added in 16499ff made it fatal.createFeaturesFoldernow creates the folder withMkdir, so a run either gets the folder to itself or getsErrExistand moves on to the next millisecond. The compose path that built the same name by hand now calls it too.Checked:
TestCreateFeaturesFolderIsTheRunsAlonefails on main (50 calls inside one millisecond get the same folder) and passes here.task lint,go test ./internal/...andtask mutate(53 refused, 0 survived) are green locally.Not covered here: the
set-up.after-failed-post-create-successandrun-user-commands.hook-failure-errorfailures on #52. In those cases the run that failed was the TSupinsetup_cmd, whose output goes to /dev/null.🤖 Generated with Claude Code