Skip to content

Stabilize JDK 10 Java CI - #200

Merged
shps951023 merged 6 commits into
mainfrom
fix/java10-surefire-diagnostics
Sep 24, 2026
Merged

shps951023 merged 6 commits into
mainfrom
fix/java10-surefire-diagnostics

Conversation

@shps951023

@shps951023 shps951023 commented Sep 24, 2026 •

Copy link
Copy Markdown
Member

Summary

  • keep Maven and packaging on JDK 17 while running the JDK 10 compatibility test JVM in interpreter mode
  • prefer WenQuanYi Micro Hei before GNU Unifont for non-subset JDK 10 CJK rendering
  • upload Surefire and HotSpot diagnostics automatically if the JDK 10 job fails again

Root cause

The obsolete HotSpot 10 runtime is unstable in compiled mode across heterogeneous hosted-runner CPUs. Changing vendors, retrying, disabling container detection, and changing Surefire launch modes did not make compiled execution reliable. Diagnostic runs also exposed incomplete Simplified Chinese extraction when GNU Unifont was selected as the primary non-subset fallback.

Maven remains on JDK 17 so normal packaging and shade verification are unchanged. Only the JDK 10 test fork uses -Xint, which removes the unstable JIT path while still running the complete compatibility suite on Java 10.

Validation

  • focused PageSize test in forked interpreter mode: 3 passed
  • focused XLSX renderer tests: 4 passed
  • local regression suite: 83 tests, 0 failures, 0 errors, 5 environment skips
  • Java CI run 35948232104: all 18 matrix jobs passed
  • rerun of 35948232104: all 18 matrix jobs passed
  • general CI build and AI security scan passed
  • git diff --check origin/main...HEAD

Summary by CodeRabbit

  • Bug Fixes
    • Updated fallback font selection for CJK text when font subsetting is disabled. The renderer now checks WQY Micro Hei first, followed by Unifont and Noto Sans SC Variable, which may change the appearance of CJK text where earlier fallback fonts are unavailable. Other fallback choices and the selection order when font subsetting is enabled remain unchanged.

@coderabbitai

coderabbitai Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 0e9305d4-fcb4-4f6d-9454-7914658da117

📥 Commits

Reviewing files that changed from the base of the PR and between f154bc0 and 8340a44.

📒 Files selected for processing (2)
  • .github/workflows/java-ci.yml
  • minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/xlsx/PoiXlsxRenderer.java

Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review.


📝 Walkthrough

Walkthrough

The pull request updates JDK 10 CI test execution and failure artifact collection. It also changes the search priority for CJK system fonts when font subsetting is disabled.

Changes

JDK 10 CI

Layer / File(s) Summary
JDK 10 test execution and failure artifacts
.github/workflows/java-ci.yml
The JDK 10 job runs Maven verification with updated JVM arguments. On failure, it uploads Surefire reports and JVM crash logs, with a three-day retention period.

CJK font search order

Layer / File(s) Summary
Non-subset font priority
minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/xlsx/PoiXlsxRenderer.java
When font subsetting is disabled, wqy-microhei.ttc is checked before unifont.ttf and NotoSansSC-VF.ttf. The remaining candidates and the subsetting-enabled order are unchanged.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 8340a

No concrete issue remains that should block merging. Font coverage on the JDK 10 runner remains unverified.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. (1 skipped: 1 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: stabilizing the JDK 10 Java CI workflow. It matches the primary pull request objective.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Comment @coderabbitai help to get the list of available commands.

@shps951023 shps951023 changed the title Diagnose JDK 10 CI startup failure Stabilize JDK 10 Java CI Sep 24, 2026
@shps951023
shps951023 marked this pull request as ready for review September 24, 2026 02:50
@shps951023
shps951023 merged commit e7e5627 into main Sep 24, 2026
39 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant