scala3-upickle CI flake: Bloop compiler-server startup timeout + maven-nightlies download failures
What happens
The scala3-upickle / schema-scala3-upickle fixture jobs intermittently fail because the Bloop compiler server times out during startup. The Scala fixtures spin up Bloop, and its 30-second startup budget is regularly exceeded, often after failed downloads from the maven-nightlies repository.
Evidence
- Signature:
java.util.concurrent.TimeoutException: Future timed out after [30 seconds]raised insidebloop.rifleduring compiler-server startup, frequently preceded byFailed to download ... maven-nightlies. - Affected PRs (6): #3039, #3034, #3008, #2996, #2991, #2980. In each, the job fails on inputs the PR does not touch (mostly
coin-pairs.json, a plain priority JSON fixture), and the PRs' own new fixtures passed under Scala before the crash (e.g. #3008, #2991). - Also on master: the same check fails on master run
29782611112(merge of #2976), confirming this is environmental rather than a PR diff.
This is the single biggest flake source in the fixture matrix.
Impact
Because the fixture matrix runs with fail-fast: true, a single Scala timeout cancels every sibling language job in the same matrix and trips the test-complete gate, so one flake looks like a broad multi-language failure. See #3066 for details.
Suggested solutions
- Cache/warm the Bloop server or pin its version so startup does not pay a cold-start cost each run.
- Raise the Bloop startup timeout above 30 seconds.
- Cache the maven artifacts with
actions/cacheso downloads do not hit the network every run. - Avoid nightly repositories (
maven-nightlies) in CI; pin to stable artifact versions.
Interim policy
Per CLAUDE.md ("Known CI flakiness"), we accept this flake for now. When it happens we retry the failed jobs (gh run rerun <run-id> --failed); a failure here only counts as real if it reproduces across retries or the PR actually touches Scala.
Source: glideapps/quicktype