From 3df1c27055834f23164bbfb2d1511d45eb362072 Mon Sep 17 00:00:00 2001 From: Sibei Chen Date: Thu, 11 Jun 2026 22:25:14 +0800 Subject: [PATCH 1/2] Warm Maven repository before Qodana scan Qodana's Maven import intermittently completes in seconds without downloading dependencies (passing runs spend ~11min in the project opening stage), leaving every library root unresolved at /data/cache/.m2. The sanity check then fails on a rotating set of files and emits 54 bogus Lombok-related findings, tripping --fail-threshold 0. Master runs failed 4x in a row today (27328515558, its rerun, 27331194671, its rerun) and once on 2026-06-04 (26931814015) with this signature. Seed the exact repo path the Qodana container uses (cache-dir/.m2 -> /data/cache/.m2) via dependency:go-offline, cached on pom.xml hash, so the scan never depends on Qodana's own download step. Co-Authored-By: Claude Fable 5 --- .github/workflows/qodana_code_quality.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/qodana_code_quality.yml b/.github/workflows/qodana_code_quality.yml index 6faea76..9d9a8a6 100644 --- a/.github/workflows/qodana_code_quality.yml +++ b/.github/workflows/qodana_code_quality.yml @@ -25,6 +25,23 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit fetch-depth: 0 # a full history is required for pull request analysis + - name: Set up JDK 25 + uses: actions/setup-java@v5 + with: + java-version: "25" + distribution: "temurin" + - name: Cache Qodana Maven repository + uses: actions/cache@v5 + with: + path: ${{ runner.temp }}/qodana/caches/.m2 + key: ${{ runner.os }}-qodana-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-qodana-m2- + # Qodana's own Maven import intermittently skips downloading dependencies, + # leaving unresolved library roots that break the sanity check and produce + # bogus findings. Seed the repo it uses (/data/cache/.m2) ourselves. + - name: Warm Maven repository for Qodana + run: mvn -B -P ci -DskipTests dependency:go-offline -Dmaven.repo.local=${{ runner.temp }}/qodana/caches/.m2 - name: "Qodana Scan" uses: JetBrains/qodana-action@v2026.1 with: From eae6368984e0bfd1f51d76fe1894c70a979ff016 Mon Sep 17 00:00:00 2001 From: Sibei Chen Date: Thu, 11 Jun 2026 22:35:05 +0800 Subject: [PATCH 2/2] Disable qodana-action built-in caching Its per-SHA cache keys never restored in practice, and with the pre-seeded .m2 it would re-upload a large cache every run. The explicit actions/cache step keyed on pom.xml manages the Maven repo instead. Co-Authored-By: Claude Fable 5 --- .github/workflows/qodana_code_quality.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/qodana_code_quality.yml b/.github/workflows/qodana_code_quality.yml index 9d9a8a6..d646109 100644 --- a/.github/workflows/qodana_code_quality.yml +++ b/.github/workflows/qodana_code_quality.yml @@ -46,7 +46,10 @@ jobs: uses: JetBrains/qodana-action@v2026.1 with: pr-mode: true - cache-default-branch-only: true + # built-in caching never restored (per-SHA keys) and would now + # re-upload the pre-seeded .m2 every run; the explicit + # actions/cache step above manages the Maven repo instead + use-caches: false args: --fail-threshold,0 env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN_2097965348 }}