FrankChen021 opened a new issue, #20399:
URL: https://github.com/apache/druid/issues/20399

   _This issue was generated automatically by Claude Code (Anthropic's AI 
coding agent) running a scheduled CI-triage routine on behalf of @FrankChen021. 
Analysis and suggested fixes are AI-produced; please verify before acting on 
them._
   
   Scope: the 7 commits pushed to `master` on 2026-09-21. 4 of them had at 
least one failed job, and every one of those failures has the same single root 
cause: #19678 (12dcc91566) added JUnit 4 `Assert.assertEquals(...)` calls to 
`HyperLogLogCollectorTest`, which had already been migrated to JUnit 5 
(`org.junit.jupiter.api.Assertions`) on master. The test module no longer 
compiled, so every push-triggered workflow (Static Checks CI, CodeQL, Unit & 
Integration tests CI) on that commit and on the next three commits (bd234ed176, 
43a0a70477, 6a05dca088, all merged within the same minute) failed at 
`maven-compiler-plugin:testCompile` before a single test ran. **This is a 
genuine regression, not a flake.** It was fixed the same day by #20388 
(13ae31afc2); that commit and the following one (f81c3c19c9) are fully green. 
No test-level flaky failures occurred on master yesterday because no test 
executed on the broken commits.
   
   ### Summary
   
   | Commit | Failed job | Failure log | Root cause | Verdict |
   |---|---|---|---|---|
   | 12dcc91566 (#19678, fix HLL zero cardinality on sparse overflow) | 
`strict-compilation`, `static-checks-maven`, `openrewrite`, `packaging-check 
(25)`, `web-checks` | [job 
106190452470](https://github.com/apache/druid/actions/runs/35552762793/job/106190452470)
 | `HyperLogLogCollectorTest` test-compile failure: `cannot find symbol: 
variable Assert` at lines 622-710 (9 sites); JUnit 4 `Assert` used in a JUnit 5 
test with no import | Persistent (fix in #20388) |
   | 12dcc91566 (#19678) | `Analyze (java)` (CodeQL) | [job 
106190451533](https://github.com/apache/druid/actions/runs/35552762493/job/106190451533)
 | same `testCompile` failure in "Build Java sources" | Persistent (fix in 
#20388) |
   | 12dcc91566 (#19678) | `docker-tests`; all 10 `unit tests (25, …)` shards; 
`QTest 0/4`-`3/4` | [job 
106190453025](https://github.com/apache/druid/actions/runs/35552762961/job/106190453025)
 | same `testCompile` failure while building `druid-processing`; no tests ran | 
Persistent (fix in #20388) |
   | bd234ed176 (#20151, handle 429/503 HTML in DirectDruidClient) | 
`strict-compilation`, `static-checks-maven`, `openrewrite`, `packaging-check 
(25)`, `web-checks` | [job 
106190478978](https://github.com/apache/druid/actions/runs/35552771908/job/106190478978)
 | same `testCompile` failure inherited from 12dcc91566; commit touches only 
`DirectDruidClient` | Persistent (fix in #20388) |
   | bd234ed176 (#20151) | `Analyze (java)` (CodeQL) | [job 
106190477985](https://github.com/apache/druid/actions/runs/35552771607/job/106190477985)
 | same | Persistent (fix in #20388) |
   | bd234ed176 (#20151) | `docker-tests`; all 10 `unit tests (25, …)` shards; 
`QTest 0/4`-`3/4` | [job 
106190479424](https://github.com/apache/druid/actions/runs/35552772119/job/106190479424)
 | same | Persistent (fix in #20388) |
   | 43a0a70477 (#20381, skip unset vars in 
EnvironmentVariableDynamicConfigProvider) | `strict-compilation`, 
`static-checks-maven`, `openrewrite`, `packaging-check (25)`, `web-checks` | 
[job 
106190515818](https://github.com/apache/druid/actions/runs/35552784640/job/106190515818)
 | same `testCompile` failure inherited from 12dcc91566 | Persistent (fix in 
#20388) |
   | 43a0a70477 (#20381) | `Analyze (java)` (CodeQL) | [job 
106190514772](https://github.com/apache/druid/actions/runs/35552784331/job/106190514772)
 | same | Persistent (fix in #20388) |
   | 43a0a70477 (#20381) | `docker-tests`; all 10 `unit tests (25, …)` shards; 
`QTest 0/4`-`3/4` | [job 
106190516040](https://github.com/apache/druid/actions/runs/35552784773/job/106190516040)
 | same | Persistent (fix in #20388) |
   | 6a05dca088 (#20368, retry bash-static download in Docker build) | 
`strict-compilation`, `static-checks-maven`, `openrewrite`, `packaging-check 
(25)`, `web-checks` | [job 
106190538695](https://github.com/apache/druid/actions/runs/35552792951/job/106190538695)
 | same `testCompile` failure inherited from 12dcc91566 | Persistent (fix in 
#20388) |
   | 6a05dca088 (#20368) | `Analyze (java)` (CodeQL) | [job 
106190537336](https://github.com/apache/druid/actions/runs/35552792624/job/106190537336)
 | same | Persistent (fix in #20388) |
   | 6a05dca088 (#20368) | `docker-tests`; all 10 `unit tests (25, …)` shards; 
`QTest 0/4`-`3/4` | [job 
106190539056](https://github.com/apache/druid/actions/runs/35552793163/job/106190539056)
 | same | Persistent (fix in #20388) |
   
   ### Analysis and suggested fixes
   
   1. **`HyperLogLogCollectorTest` does not compile after #19678 (processing, 
all shards)**
   
      #19678 adds nine regression tests to 
`processing/src/test/java/org/apache/druid/hll/HyperLogLogCollectorTest.java` 
(odd-bucket overflow, populated neighbour sharing the overflow byte, dense 
collectors of both parities) and asserts with `Assert.assertEquals(...)`. The 
file's imports at that commit are only `org.junit.jupiter.api.Assertions`, 
`Disabled` and `Test`: the test had been migrated to JUnit 5 on master on 
2026-08-13 (3f16421969), so `Assert` resolves to nothing and `testCompile` of 
`druid-processing` fails with `cannot find symbol: variable Assert` at lines 
622, 623, 632, 649, 664, 678, 693, 705 and 710. Because every downstream job 
(unit-test shards, QTest splits, docker-tests, strict-compilation, 
static-checks-maven, openrewrite, packaging-check, web-checks' Maven step and 
the CodeQL Java build) compiles the test sources of `processing`, all of them 
fail identically and no test executes. The production change in 
`HyperLogLogCollector.java` itself is fine and is not im
 plicated.
   
      Why pre-merge CI did not catch it: the PR's last pre-merge runs (Static 
Checks CI, CodeQL, Unit & Integration tests CI) were on 2026-07-14 against the 
PR head `69a616a9`, which predates the JUnit 5 migration by a month; at that 
time `org.junit.Assert` was still imported by the file. The branch was merged 
on 2026-09-21 without a rebase or a fresh CI run, so the merge commit was never 
compiled before landing. The three commits merged in the same minute (#20151, 
#20381, #20368) inherited the broken file and are otherwise unrelated: they 
touch `DirectDruidClient`, `EnvironmentVariableDynamicConfigProvider` and the 
Docker build script respectively.
   
      Status: fixed by #20388 (13ae31afc2), which replaces the nine 
`Assert.assertEquals` calls with `Assertions.assertEquals`. Master is green 
from that commit onward (13ae31afc2 and f81c3c19c9 both fully passed), so no 
further code change is needed.
   
      Suggested fix (process, to prevent a recurrence): require the PR branch 
to be up to date with `master`, or at least require a pre-merge CI run newer 
than N days, before merging. Concretely, enable "Require branches to be up to 
date before merging" on the `master` ruleset, or extend `PR Commit Checks` to 
fail when the PR's merge-base is older than the latest JUnit-migration-style 
sweeping commit. A cheaper alternative is to make the `PR Merged` 
(`pull_request_target`) workflow trigger a `Static Checks CI` run on the merge 
commit and notify the merger on failure, so a stale-branch break is caught 
within minutes instead of being discovered on the next four commits.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to