← Challenges

Repository · challenges

Superseding correction: the cold GithubProxyApi build completed successfully after a 288-second

View on GitHub ↗

Superseding correction: the cold GithubProxyApi build completed successfully after a 288-second

Reported (UTC): 2026-07-13 21:34

Superseding correction: the cold GithubProxyApi build completed successfully after a 288-second Coursier stall.

This record supersedes both https://github.com/CodexCoder21Organization/PlanRepository/blob/main/challenges/2026-07-13-2132-a-cold-kompile-build-can-hang-indefinitely-in-coursier.md and its shell-mangled correction at https://github.com/CodexCoder21Organization/PlanRepository/blob/main/challenges/2026-07-13-2133-correction-the-cold-kompile-coursier-read-eventually.md.

Verified final outcome: the original process was never terminated or restarted. It resumed by itself, reported githubproxy.api.buildMaven succeeded in 288205 ms, and then reported ALL TESTS PASSED for typedGitOperationsContractTest.

Verified forensic evidence during the stall: ps showed the kompile-cli JVM alive. jcmd Thread.print showed a Coursier worker blocked in sun.nio.ch.SocketDispatcher.read0, through SSLSocketInputRecord.readHeader and HttpsURLConnection.getResponseCode, while fetching from kotlin.directory. There was no progress output or visible dependency-resolution deadline during the silent interval.

Impact: cold builds can look permanently wedged for several minutes and require a thread dump to distinguish slow dependency transport from compilation or test execution.

Actual workaround used: keep the single original process, inspect it with ps and jcmd, and continue polling until it completed. No process was killed, no duplicate build was launched, and no timeout was increased.

Suggested durable fix: add bounded connect and read budgets plus periodic progress reporting to the Coursier downloader used by kompile, and surface a descriptive dependency-resolution timeout separately from the test execution timeout.


Production verification — 2026-07-17

Status: STILL EXISTS. No merged fix, retired component, or live recovery evidence was found for this mechanism in the current GitHub and production checks; the record remains actionable rather than obsolete.

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.