glideapps / glideapps/quicktype

scala3-upickle CI flake: Bloop compiler-server startup timeout + maven-nightlies download failures

Open
#3,063 0 comments 0 reactions 0 assignees View on GitHub
CI
Dominant language
TypeScript
Stars
13.9k
Forks
1.2k
Avg merge
8h 53m
Merged PRs (30d)
369

Description

## 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 inside `bloop.rifle` during compiler-server startup, frequently preceded by `Failed 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/cache` so 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 --failed`); a failure here only counts as real if it reproduces across retries or the PR actually touches Scala.

Contributor guide

Open the contributing guide

Research direction

Start by reading CLAUDE.md's "Known CI flakiness" section and locating the fixture matrix CI configuration that starts Bloop for the scala3-upickle and schema-scala3-upickle jobs. Reproduce or rerun the affected check, then determine whether startup timeouts or maven-nightlies download failures are addressed; done means the Scala job no longer flakes and sibling matrix jobs are not unnecessarily cancelled.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, scala
Domain
build-system, ci-cd
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.