[ 
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)

Reply via email to