Repository · challenges
Kompile test dependency resolution stalls on public artifacts through kotlin.directory.
Reported (UTC): 2026-07-15 21:37
Kompile test dependency resolution stalls on public artifacts through kotlin.directory.
What was being attempted: run bash scripts/test.bash --test testGossipBroadcastStormWithStalledPeersBoundsQueuedMemory in UrlResolver after a fresh origin/main checkout.
What went wrong: UrlResolver source compilation completed, then kompile-cli 0.0.77 remained in WorkspaceKt.runTests for more than 11 minutes. jcmd showed all six coursier-pool workers repeatedly RUNNABLE in sun.nio.ch.Net.connect0 via coursier.cache.internal.Downloader, while rotating .lock files under ~/.cache/coursier/v1/https/token%40kotlin.directory for public Maven Central artifacts. The final persistent lock was io/netty/netty-tcnative-classes/2.0.76.Final/netty-tcnative-classes-2.0.76.Final.pom; curl fetched that exact POM from repo1.maven.org in 0.095 seconds, while the kotlin.directory route did not complete in the build.
Impact: a single targeted local test never reached execution after 11 minutes, blocking reliable flake reproduction and wasting a full cold compilation.
Workaround used: terminate the wedged invocation, populate the identical public artifact in Coursier's cache from Maven Central, then rerun the required test command.
Suggested durable fix: make the kompile/Coursier repository order resolve public coordinates from Maven Central before kotlin.directory, or give kotlin.directory's public-artifact proxy a short connect timeout and prompt fallback; also emit the currently requested URL so stalls are diagnosable without inspecting cache locks and thread dumps.
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.