Conversation
He-Pin
left a comment
There was a problem hiding this comment.
Deep CR: PR #2828 - Update Java version to 26
Architecture Review
This PR changes CI to exclusively use Java 26, replacing Java 17 and Java 21 in all workflow jobs. The PR description explicitly states "just an experiment to see what breaks."
Concerns
1. Single Java Version Testing is Insufficient
Pekko 2.0 targets Java 17+ as its minimum. Testing ONLY on Java 26 means:
- Regression on Java 17 (the actual minimum supported version) will not be caught
- Java 21 LTS (the most widely deployed LTS between 17 and 26) will not be tested
- Users on Java 17-25 have no CI guarantee of compatibility
2. Experiment vs Production CI
This PR modifies the build-test-prValidation.yml workflow which is the primary CI pipeline for PR validation. Experiments should use a separate workflow file (e.g., build-test-java26-experimental.yml) that does not block regular PRs.
3. Missing Context on Why Java 26
Java 26 is the latest release at the time of this PR (April 2026). Testing on it is valuable, but replacing existing LTS testing is not. The correct approach is a matrix:
- Java 17 (minimum supported)
- Java 21 (LTS, most common production version)
- Java 26 (latest, forward compatibility)
Recommendations
- Do not merge this as-is. Convert to a separate experimental workflow or add Java 26 as a matrix entry alongside Java 17/21.
- If the intent is to eventually raise the minimum Java version to 26, that should be a separate discussion with community consensus, documented in the mailing list.
- Consider using
--matrix-excludeto reduce CI cost while maintaining multi-version coverage (e.g., run Java 17 on all PRs, Java 21 and 26 on nightly builds).
Binary Compatibility
CI-only change. No impact on binary compatibility or the public API.
Test Coverage
The workflows themselves are being tested - they will fail if Java 26 introduces incompatibilities. However, the lack of Java 17/21 testing means incompatibilities with those versions will go undetected until users report them.
4f61513 to
04a4784
Compare
|
seems that we still compile with java 26 |
just an experiment to see what breaks