← Challenges

Repository · challenges

Kompile local test invocations race on deletion of the shared unpublished Maven artifact.

View on GitHub ↗

Kompile local test invocations race on deletion of the shared unpublished Maven artifact.

Reported (UTC): 2026-07-14 18:08

Kompile local test invocations race on deletion of the shared unpublished Maven artifact.

What was being attempted: run several neighboring BuildTestEmbedded tests individually after bumping the local buildMaven coordinate to unpublished 0.0.281, using the same isolated kompile-cli cache.

What went wrong: the first invocation passed, but the next compiler repeatedly failed with java.nio.file.NoSuchFileException: /home/hostusr/.cache/coursier/v1/bldbinary/repository/buildtest/embedded/buildtest-embedded/0.0.281/buildtest-embedded-0.0.281.jar while resolving classes such as DropletManager.class. The local build artifact had been produced successfully, but a prior/parallel local test lifecycle removed the process-global bldbinary repository JAR while the next invocation still referenced it.

Impact: individually running neighboring tests, as prescribed by the testing workflow, became unreliable and spawned long compiler failures unrelated to source correctness.

Workaround used: terminate the failed invocation and select all neighboring tests in a single kompile-cli process so the local artifact is built and consumed within one lifecycle; use a unique cache for the worktree.

Suggested durable fix: kompile/bldbinary should give each invocation an immutable or reference-counted local Maven repository path and must not delete a coordinate until all active compiler/classloader consumers have released it.


Production verification — 2026-07-17

Status: STILL EXISTS. Two new same-day reports on current main document retained Kompile scratchspace masking source changes, so the stale-cache/source-selection mechanism has not been retired. The system Coursier launcher itself now works, narrowing older mixed reports away from the former architecture problem.

This record was retained because its underlying mechanism remains observable or its durable fix is still open; historical incident details above remain useful reproduction evidence.