[
https://issues.apache.org/jira/browse/GEODE-10482?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jinwoo Hwang updated GEODE-10482:
---------------------------------
Description: Not supported due to Jakarta EE 10 migration (was: h2.
*Summary*
This epic covers the work required to enhance and certify our backward
compatibility test suite to validate that Apache Geode servers running on *Java
17* can seamlessly communicate with older Geode clients running on {*}Java 8
and 11{*}. This is a critical release gate for the Java 17 migration project
(GEODE-10465).
----
h2. *Description*
h3. *Background*
The migration of the Geode server to Java 17 introduces a potential
compatibility risk for our users who may continue to run their clients on
older, LTS versions of Java like 8 or 11. While Geode's client-server protocol
is designed to be platform-agnostic, we must empirically validate this
assumption to prevent breaking production deployments.
The existing geode-old-client-support and geode-old-versions modules provide
the foundation for this testing, but they must be enhanced to run in a
multi-JVM, cross-version matrix.
h3. *Problem Statement*
Without explicit cross-JVM compatibility validation, we risk:
* Breaking production client applications during server upgrades
* Silent failures in serialization/deserialization between JVMs
* Authentication/SSL handshake issues due to different default cipher suites
* Loss of enterprise customer confidence in upgrade safety
h3. *Business Justification*
A robust backward compatibility guarantee is a cornerstone of enterprise
software. This work directly supports our users by de-risking their upgrade
path, allowing them to adopt new server features without being forced into a
"big bang" client-side upgrade. It is a mandatory prerequisite for releasing
the Java 17 version of Geode.
----
h2. *Acceptance Criteria*
* A new, automated test suite runs successfully in the CI/CD pipeline.
* The test suite validates a Java 17 Geode server against clients running on
at least Java 8 and Java 11.
* The suite tests against a matrix of the last {{N}} supported minor versions
of Geode clients (e.g., 1.15.x, 1.14.x).
* Core functionalities (see "Test Scenarios" below) pass without regression.
* A compatibility matrix is generated and published as part of the official
release documentation.
* The test suite is integrated as a release-gating check.
----
h2. *Technical Implementation Plan*
*1. Enhance Test Infrastructure:*
* Utilize containerization (Docker) to create a test environment with
multiple, specific JDK installations (8, 11, 17).
* Update the Gradle build scripts for geode-old-client-support and
geode-old-versions to accept JVM version as a parameter for launching client
processes.
*2. Create a CI/CD Compatibility Matrix Job:*
* In GitHub Actions, create a new workflow with a test matrix:
** {{{}server_jvm{}}}: {{[17]}}
** {{{}client_jvm{}}}: {{[8, 11]}}
** {{{}client_geode_version{}}}: {{[<current>, 1.15.x, 1.14.x]}} (configurable)
* This job will execute the enhanced compatibility test suite.
*3. Implement Focused Test Scenarios:* The suite will be expanded to cover
high-risk interaction points between different JVMs:
* *Handshake & Security:* Client-server connection, authentication, and
SSL/TLS negotiation (critical due to different default ciphers between JDK 8
and 17).
* *Serialization:* Full round-trip validation of PDX and {{DataSerializable}}
objects between the different JVMs.
* *Core API:* put, get, {{{}remove{}}}, {{query}} (OQL), region
creation/destruction.
* *Advanced Features:* Continuous Query (CQ) registration and event delivery,
Function Execution, transaction boundaries.
* *Rolling Upgrades:* Simulate a mixed-JVM cluster during a rolling upgrade to
ensure clients can failover between servers on different Java versions.
----
h2. *Subtasks*
h3. *Phase 1: Infrastructure & Scaffolding*
* *GEODE-XXXX-1:* Create Docker images with pre-installed JDK 8, 11, and 17.
* *GEODE-XXXX-2:* Parameterize the test runner in geode-old-client-support to
launch clients with a specified JDK.
* *GEODE-XXXX-3:* Set up the initial GitHub Actions workflow with the test
matrix axes.
h3. *Phase 2: Test Implementation*
* *GEODE-XXXX-4:* Implement the Handshake & Security test suite.
* *GEODE-XXXX-5:* Implement the cross-JVM Serialization test suite.
* *GEODE-XXXX-6:* Adapt existing dunit tests for core API validation to run
within the new matrix.
* *GEODE-XXXX-7:* Implement tests for CQs and Function Execution.
h3. *Phase 3: Integration & Documentation*
* *GEODE-XXXX-8:* Integrate the new test suite as a required check for
releases.
* *GEODE-XXXX-9:* Generate and publish the official compatibility matrix in
the project documentation.
* *GEODE-XXXX-10:* Update the "Upgrading" documentation with guidance for
mixed-JVM environments.
----
h2. *Dependencies*
* *Blocked By:* {{GEODE-10465}} (Core Java 17 Migration) must be functionally
complete.
* *Blocks:* The final release of the first Java 17-based version of Apache
Geode.
----
h2. *Timeline*
* *Estimated Effort:* 4 Sprints (8 weeks)
* *Target Completion:* Prior to the first RC for Geode 2.0.0.
----
h2. *Definition of Done*
* The compatibility test suite is fully automated and integrated into the
CI/CD pipeline.
* All defined test scenarios pass for all configurations in the compatibility
matrix.
* A clear, public-facing compatibility matrix is published.
* The suite is a mandatory, passing check for all future releases.
* The project team has a clear process for diagnosing and fixing any future
backward-compatibility regressions caught by the suite.
)
> Enhance Backward Compatibility Testing for Java 17 Server with Legacy Clients
> -----------------------------------------------------------------------------
>
> Key: GEODE-10482
> URL: https://issues.apache.org/jira/browse/GEODE-10482
> Project: Geode
> Issue Type: Improvement
> Reporter: Jinwoo Hwang
> Assignee: Jinwoo Hwang
> Priority: Major
>
> Not supported due to Jakarta EE 10 migration
--
This message was sent by Atlassian Jira
(v8.20.10#820010)