Failure Details
Failed Jobs and Errors
| Job |
Conclusion |
| Per-Class Coverage Gate → Enforce Per-Class Coverage Gate |
❌ failure |
| allBuildAndTestSuccessful → Verify all jobs passed |
❌ failure (depends on above) |
| All other buildAndTest jobs (Java 11/17/21/25, jcstress) |
✅ success |
Coverage regression reported by the gate:
| Class |
Line |
Branch |
Method |
graphql.execution.instrumentation.dataloader.ExhaustedDataLoaderDispatchStrategy |
-1.2% 🔴 |
-7.7% 🔴 |
±0.0% |
Specifically the dispatchImpl method:
- Line: 95.0% (baseline: 100.0%, delta: -5.0%)
- Branch: 75.0% (baseline: 100.0%, delta: -25.0%)
Root Cause
This failure is not caused by PR #4326, which only modifies .github/dependabot.yml (Dependabot schedule: weekly → monthly). No Java source code was changed.
The coverage regression in ExhaustedDataLoaderDispatchStrategy.dispatchImpl is a flaky/intermittent failure. The method uses a CAS (Compare-And-Swap) based loop with multiple concurrent code paths:
private void dispatchImpl(CallStack callStack) {
while (true) {
int oldState = callStack.getState();
if (!CallStack.getDataLoaderToDispatch(oldState)) { // branch: may/may-not be hit
int newState = CallStack.setCurrentlyDispatching(oldState, false);
if (callStack.tryUpdateState(oldState, newState)) { // CAS: may fail and retry
return;
}
}
// ...
if (callStack.tryUpdateState(oldState, newState)) { // CAS: retry branch may/may-not trigger
break;
}
}
// ...
}
The branch miss (25% = 2/8 branches) corresponds to CAS-retry paths that are only hit under specific concurrent timing conditions. The baseline recorded 100% coverage when these paths happened to be exercised, but they are not reliably exercised in every test run.
Baseline confirms 100% was the recorded expectation:
dispatchImpl baseline: Line {covered: 20, missed: 0}, Branch {covered: 8, missed: 0}
Recommended Fix
Generated by CI Failure Doctor · ◷
To install this agentic workflow, run
gh aw add githubnext/agentics/workflows/ci-doctor.md@ee50a3b7d1d3eb4a8c409ac9409fd61c9a66b0f5
Failure Details
fff310fe224fa8092da539426109515f0b686d3eFailed Jobs and Errors
Coverage regression reported by the gate:
graphql.execution.instrumentation.dataloader.ExhaustedDataLoaderDispatchStrategySpecifically the
dispatchImplmethod:Root Cause
This failure is not caused by PR #4326, which only modifies
.github/dependabot.yml(Dependabot schedule: weekly → monthly). No Java source code was changed.The coverage regression in
ExhaustedDataLoaderDispatchStrategy.dispatchImplis a flaky/intermittent failure. The method uses a CAS (Compare-And-Swap) based loop with multiple concurrent code paths:The branch miss (25% = 2/8 branches) corresponds to CAS-retry paths that are only hit under specific concurrent timing conditions. The baseline recorded 100% coverage when these paths happened to be exercised, but they are not reliably exercised in every test run.
Baseline confirms 100% was the recorded expectation:
dispatchImplbaseline: Line{covered: 20, missed: 0}, Branch{covered: 8, missed: 0}Recommended Fix
test-baseline.jsonto reflect a more realistic/stable coverage level forExhaustedDataLoaderDispatchStrategy.dispatchImpl, or add a dedicated concurrency test that reliably exercises all CAS-retry branches indispatchImpl(thewhile(true)loop's retry path whentryUpdateStatereturnsfalse).src/main/java/graphql/execution/instrumentation/dataloader/ExhaustedDataLoaderDispatchStrategy.javadispatchImpl(line ~239)src/test/groovy/graphql/execution/instrumentation/dataloader/