[ 
https://issues.apache.org/jira/browse/GEODE-10482?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jinwoo Hwang updated GEODE-10482:
---------------------------------
    Summary: Enhance Backward Compatibility Testing for Java 17 Server with 
Legacy Clients  (was: Enhance Backward Compatibility Suite for Java 17 Server)

> 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
>            Priority: Major
>
> 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.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to