[
https://issues.apache.org/jira/browse/GEODE-10558?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jinwoo Hwang updated GEODE-10558:
---------------------------------
Description:
h2. Summary
Research and validate compatibility between Apache Geode Native Client and
Apache Geode Server 2.0.0 to ensure proper client-server communication,
protocol compatibility, and API functionality.
h2. Description
Apache Geode 2.0 represents a major version release with potential breaking
changes. This research task aims to:
* Verify protocol compatibility between native clients and Geode 2.0 servers
* Identify any breaking changes affecting native client functionality
* Document supported version combinations
* Provide migration guidance for users upgrading to Geode 2.0
h2. Acceptance Criteria
* Compatibility matrix created for Geode Native versions vs Geode 2.0
* All critical APIs tested with Geode 2.0 server
* Wire protocol compatibility verified
* Performance benchmarks completed
* Documentation updated with compatibility information
* Migration guide created (if needed)
h2. Research Scope
h3. 1. Version Analysis
* Analyze Geode Native Client versions: 1.15.x, 2.0.0
* Compare with Geode Server 2.0.0 release notes
* Identify deprecated/removed features affecting native clients
* Review wire protocol changes
h3. 2. Build & Configuration Testing
* Download official Geode 2.0.0 release
* Download Geode Native Client releases (1.15.x, 2.0.0)
* Verify CMake configuration with Geode 2.0
* Test build process on multiple platforms:
** macOS (11.0+)
** Linux (Ubuntu 20.04, RHEL 8)
** Windows (Server 2019)
h3. 3. Functional Testing
Test the following client operations against Geode 2.0:
*Cache Operations:*
* Cache creation and configuration
* Region creation (PROXY, CACHING_PROXY, LOCAL)
* Connection pool management
* Multi-region operations
*CRUD Operations:*
* put(), get(), remove()
* putAll(), getAll(), removeAll()
* Atomic operations (replace, compareAndSwap)
* Entry TTL and expiration
*Query & Search:*
* OQL queries
* Continuous queries (CQ)
* Indexes
* Query result handling
*Advanced Features:*
* Function execution
* Transactions
* Event handling and listeners
* PDX serialization
* Security (authentication/authorization)
* SSL/TLS connections
h3. 4. Performance & Stability
* Benchmark throughput vs Geode 1.15.x
* Memory consumption analysis
* Connection stability under load
* Failover and high availability scenarios
h3. 5. Integration Testing
* Test with various Geode 2.0 topologies:
** Single server
** Locator + multiple servers
** WAN replication
** Security enabled
* Network configurations (IPv4, IPv6)
* SNI (Server Name Indication) support
h2. Technical Environment
h3. Server Component
{code:java}
Component: Apache Geode Server
Version: 2.0.0
Source: https://github.com/apache/geode/releases/tag/rel%2Fv2.0.0
Platform: Linux/macOS/Windows
{code}
h3. Client Components
{code:java}
Component: Apache Geode Native Client
Versions to Test:
- 1.15.0, 1.15.1, 1.15.2
- 2.0.0
Source: https://github.com/apache/geode-native/releases
Languages: C++, .NET Framework
{code}
h3. Build Requirements
* CMake 3.18+
* C++11 compiler
* OpenSSL
* Java 11+ JDK (for server)
* Docker (for containerized testing)
h2. Test Scenarios
h3. Scenario 1: Version Detection
{code:bash}
# Verify CMake can detect Geode 2.0
export GEODE_HOME=/path/to/geode-2.0.0
cmake .. -DGEODE_ROOT=$GEODE_HOME
Expected: "Found Geode: ... (found suitable version "2.0.0")"
{code}
h3. Scenario 2: Basic Connectivity
{code:cpp}
// Test basic client-server connection
auto cache = CacheFactory()
.set("log-level", "info")
.create();
auto poolFactory = cache.getPoolManager().createFactory();
poolFactory.addLocator("localhost", 10334);
auto pool = poolFactory.create("myPool");
// Expected: Successful connection to Geode 2.0 server
{code}
h3. Scenario 3: Region Operations
{code:cpp}
// Test CRUD operations on regions
auto regionFactory = cache.createRegionFactory(RegionShortcut::PROXY);
auto region = regionFactory.setPoolName("myPool")
.create("testRegion");
region->put("key1", "value1");
auto result = region->get("key1");
region->remove("key1");
// Expected: All operations succeed with Geode 2.0
{code}
h3. Scenario 4: Query Execution
{code:cpp}
// Test OQL queries
auto queryService = cache.getQueryService();
auto query = queryService->newQuery("SELECT * FROM /testRegion WHERE id > 100");
auto results = query->execute();
// Expected: Query results returned successfully
{code}
h3. Scenario 5: Security Integration
{code:cpp}
// Test authentication with Geode 2.0
auto cacheFactory = CacheFactory();
cacheFactory.set("security-username", "user");
cacheFactory.set("security-password", "pass");
auto secureCache = cacheFactory.create();
// Expected: Authentication succeeds
{code}
h2. Known Issues & Risks
{panel:title=Potential Risks|borderColor=#cccccc|titleBGColor=#f7d6c1}
* *Wire Protocol Changes:* Geode 2.0 may have protocol changes requiring
native client updates
* *API Deprecations:* Some APIs may be deprecated/removed in Geode 2.0
* *Build Dependencies:* Boost/OpenSSL version compatibility on newer systems
* *Performance Regressions:* New protocol overhead or server-side changes
* *Security Changes:* Updated authentication/authorization mechanisms{panel}
h2. Timeline
{code:java}
Phase 1: Setup & Initial Testing (Week 1-2)
- Download and install components
- Verify build configuration
- Basic connectivity tests
Phase 2: Functional Testing (Week 3-5)
- CRUD operations testing
- Query functionality
- Advanced features
Phase 3: Performance & Stability (Week 6-8)
- Benchmark execution
- Load testing
- Failover scenarios
Phase 4: Documentation & Reporting (Week 9-12)
- Create compatibility matrix
- Write migration guide
- Finalize test reports
{code}
h2. Success Metrics
* *API compatibility* - All major APIs work with Geode 2.0
* *Zero critical bugs* - No blocking issues for production use
* *Performance parity* - Within 5% of Geode 1.15.x performance
* *Clear documentation* - Users can easily determine compatibility and migrate
h2. Related Resources
* [Apache Geode 2.0 Release
Notes|https://github.com/apache/geode/releases/tag/rel%2Fv2.0.0]
* [Geode Native 2.0 Release
Notes|https://github.com/apache/geode-native/releases/tag/rel%2Fv2.0.0]
* [Geode Wire Protocol Specification|https://geode.apache.org/docs/]
* [Geode Native Documentation|https://geode.apache.org/docs/native/]
was:
h2. Summary
Research and validate compatibility between Apache Geode Native Client and
Apache Geode Server 2.0.0 to ensure proper client-server communication,
protocol compatibility, and API functionality.
h2. Description
Apache Geode 2.0 represents a major version release with potential breaking
changes. This research task aims to:
* Verify protocol compatibility between native clients and Geode 2.0 servers
* Identify any breaking changes affecting native client functionality
* Document supported version combinations
* Provide migration guidance for users upgrading to Geode 2.0
h2. Acceptance Criteria
* [ ] Compatibility matrix created for Geode Native versions vs Geode 2.0
* [ ] All critical APIs tested with Geode 2.0 server
* [ ] Wire protocol compatibility verified
* [ ] Performance benchmarks completed
* [ ] Documentation updated with compatibility information
* [ ] Migration guide created (if needed)
h2. Research Scope
h3. 1. Version Analysis
* Analyze Geode Native Client versions: 1.15.x, 2.0.0
* Compare with Geode Server 2.0.0 release notes
* Identify deprecated/removed features affecting native clients
* Review wire protocol changes
h3. 2. Build & Configuration Testing
* Download official Geode 2.0.0 release
* Download Geode Native Client releases (1.15.x, 2.0.0)
* Verify CMake configuration with Geode 2.0
* Test build process on multiple platforms:
** macOS (11.0+)
** Linux (Ubuntu 20.04, RHEL 8)
** Windows (Server 2019)
h3. 3. Functional Testing
Test the following client operations against Geode 2.0:
*Cache Operations:*
* Cache creation and configuration
* Region creation (PROXY, CACHING_PROXY, LOCAL)
* Connection pool management
* Multi-region operations
*CRUD Operations:*
* put(), get(), remove()
* putAll(), getAll(), removeAll()
* Atomic operations (replace, compareAndSwap)
* Entry TTL and expiration
*Query & Search:*
* OQL queries
* Continuous queries (CQ)
* Indexes
* Query result handling
*Advanced Features:*
* Function execution
* Transactions
* Event handling and listeners
* PDX serialization
* Security (authentication/authorization)
* SSL/TLS connections
h3. 4. Performance & Stability
* Benchmark throughput vs Geode 1.15.x
* Memory consumption analysis
* Connection stability under load
* Failover and high availability scenarios
h3. 5. Integration Testing
* Test with various Geode 2.0 topologies:
** Single server
** Locator + multiple servers
** WAN replication
** Security enabled
* Network configurations (IPv4, IPv6)
* SNI (Server Name Indication) support
h2. Technical Environment
h3. Server Component
{code:java}
Component: Apache Geode Server
Version: 2.0.0
Source: https://github.com/apache/geode/releases/tag/rel%2Fv2.0.0
Platform: Linux/macOS/Windows
{code}
h3. Client Components
{code:java}
Component: Apache Geode Native Client
Versions to Test:
- 1.15.0, 1.15.1, 1.15.2
- 2.0.0
Source: https://github.com/apache/geode-native/releases
Languages: C++, .NET Framework
{code}
h3. Build Requirements
* CMake 3.18+
* C++11 compiler
* OpenSSL
* Java 11+ JDK (for server)
* Docker (for containerized testing)
h2. Test Scenarios
h3. Scenario 1: Version Detection
{code:bash}
# Verify CMake can detect Geode 2.0
export GEODE_HOME=/path/to/geode-2.0.0
cmake .. -DGEODE_ROOT=$GEODE_HOME
Expected: "Found Geode: ... (found suitable version "2.0.0")"
{code}
h3. Scenario 2: Basic Connectivity
{code:cpp}
// Test basic client-server connection
auto cache = CacheFactory()
.set("log-level", "info")
.create();
auto poolFactory = cache.getPoolManager().createFactory();
poolFactory.addLocator("localhost", 10334);
auto pool = poolFactory.create("myPool");
// Expected: Successful connection to Geode 2.0 server
{code}
h3. Scenario 3: Region Operations
{code:cpp}
// Test CRUD operations on regions
auto regionFactory = cache.createRegionFactory(RegionShortcut::PROXY);
auto region = regionFactory.setPoolName("myPool")
.create("testRegion");
region->put("key1", "value1");
auto result = region->get("key1");
region->remove("key1");
// Expected: All operations succeed with Geode 2.0
{code}
h3. Scenario 4: Query Execution
{code:cpp}
// Test OQL queries
auto queryService = cache.getQueryService();
auto query = queryService->newQuery("SELECT * FROM /testRegion WHERE id > 100");
auto results = query->execute();
// Expected: Query results returned successfully
{code}
h3. Scenario 5: Security Integration
{code:cpp}
// Test authentication with Geode 2.0
auto cacheFactory = CacheFactory();
cacheFactory.set("security-username", "user");
cacheFactory.set("security-password", "pass");
auto secureCache = cacheFactory.create();
// Expected: Authentication succeeds
{code}
h2. Known Issues & Risks
{panel:title=Potential Risks|borderColor=#cccccc|titleBGColor=#f7d6c1}
* *Wire Protocol Changes:* Geode 2.0 may have protocol changes requiring
native client updates
* *API Deprecations:* Some APIs may be deprecated/removed in Geode 2.0
* *Build Dependencies:* Boost/OpenSSL version compatibility on newer systems
* *Performance Regressions:* New protocol overhead or server-side changes
* *Security Changes:* Updated authentication/authorization mechanisms{panel}
h2. Timeline
{code:java}
Phase 1: Setup & Initial Testing (Week 1-2)
- Download and install components
- Verify build configuration
- Basic connectivity tests
Phase 2: Functional Testing (Week 3-5)
- CRUD operations testing
- Query functionality
- Advanced features
Phase 3: Performance & Stability (Week 6-8)
- Benchmark execution
- Load testing
- Failover scenarios
Phase 4: Documentation & Reporting (Week 9-12)
- Create compatibility matrix
- Write migration guide
- Finalize test reports
{code}
h2. Success Metrics
* *API compatibility* - All major APIs work with Geode 2.0
* *Zero critical bugs* - No blocking issues for production use
* *Performance parity* - Within 5% of Geode 1.15.x performance
* *Clear documentation* - Users can easily determine compatibility and migrate
h2. Related Resources
* [Apache Geode 2.0 Release
Notes|https://github.com/apache/geode/releases/tag/rel%2Fv2.0.0]
* [Geode Native 2.0 Release
Notes|https://github.com/apache/geode-native/releases/tag/rel%2Fv2.0.0]
* [Geode Wire Protocol Specification|https://geode.apache.org/docs/]
* [Geode Native Documentation|https://geode.apache.org/docs/native/]
> Compatibility Research: Apache Geode Native Client with Apache Geode 2.0
> ------------------------------------------------------------------------
>
> Key: GEODE-10558
> URL: https://issues.apache.org/jira/browse/GEODE-10558
> Project: Geode
> Issue Type: Improvement
> Reporter: Jinwoo Hwang
> Assignee: Jinwoo Hwang
> Priority: Major
>
> h2. Summary
> Research and validate compatibility between Apache Geode Native Client and
> Apache Geode Server 2.0.0 to ensure proper client-server communication,
> protocol compatibility, and API functionality.
> h2. Description
> Apache Geode 2.0 represents a major version release with potential breaking
> changes. This research task aims to:
> * Verify protocol compatibility between native clients and Geode 2.0 servers
> * Identify any breaking changes affecting native client functionality
> * Document supported version combinations
> * Provide migration guidance for users upgrading to Geode 2.0
> h2. Acceptance Criteria
> * Compatibility matrix created for Geode Native versions vs Geode 2.0
> * All critical APIs tested with Geode 2.0 server
> * Wire protocol compatibility verified
> * Performance benchmarks completed
> * Documentation updated with compatibility information
> * Migration guide created (if needed)
> h2. Research Scope
> h3. 1. Version Analysis
> * Analyze Geode Native Client versions: 1.15.x, 2.0.0
> * Compare with Geode Server 2.0.0 release notes
> * Identify deprecated/removed features affecting native clients
> * Review wire protocol changes
> h3. 2. Build & Configuration Testing
> * Download official Geode 2.0.0 release
> * Download Geode Native Client releases (1.15.x, 2.0.0)
> * Verify CMake configuration with Geode 2.0
> * Test build process on multiple platforms:
> ** macOS (11.0+)
> ** Linux (Ubuntu 20.04, RHEL 8)
> ** Windows (Server 2019)
> h3. 3. Functional Testing
> Test the following client operations against Geode 2.0:
> *Cache Operations:*
> * Cache creation and configuration
> * Region creation (PROXY, CACHING_PROXY, LOCAL)
> * Connection pool management
> * Multi-region operations
> *CRUD Operations:*
> * put(), get(), remove()
> * putAll(), getAll(), removeAll()
> * Atomic operations (replace, compareAndSwap)
> * Entry TTL and expiration
> *Query & Search:*
> * OQL queries
> * Continuous queries (CQ)
> * Indexes
> * Query result handling
> *Advanced Features:*
> * Function execution
> * Transactions
> * Event handling and listeners
> * PDX serialization
> * Security (authentication/authorization)
> * SSL/TLS connections
> h3. 4. Performance & Stability
> * Benchmark throughput vs Geode 1.15.x
> * Memory consumption analysis
> * Connection stability under load
> * Failover and high availability scenarios
> h3. 5. Integration Testing
> * Test with various Geode 2.0 topologies:
> ** Single server
> ** Locator + multiple servers
> ** WAN replication
> ** Security enabled
> * Network configurations (IPv4, IPv6)
> * SNI (Server Name Indication) support
> h2. Technical Environment
> h3. Server Component
> {code:java}
> Component: Apache Geode Server
> Version: 2.0.0
> Source: https://github.com/apache/geode/releases/tag/rel%2Fv2.0.0
> Platform: Linux/macOS/Windows
> {code}
> h3. Client Components
> {code:java}
> Component: Apache Geode Native Client
> Versions to Test:
> - 1.15.0, 1.15.1, 1.15.2
> - 2.0.0
> Source: https://github.com/apache/geode-native/releases
> Languages: C++, .NET Framework
> {code}
> h3. Build Requirements
> * CMake 3.18+
> * C++11 compiler
> * OpenSSL
> * Java 11+ JDK (for server)
> * Docker (for containerized testing)
> h2. Test Scenarios
> h3. Scenario 1: Version Detection
> {code:bash}
> # Verify CMake can detect Geode 2.0
> export GEODE_HOME=/path/to/geode-2.0.0
> cmake .. -DGEODE_ROOT=$GEODE_HOME
> Expected: "Found Geode: ... (found suitable version "2.0.0")"
> {code}
> h3. Scenario 2: Basic Connectivity
> {code:cpp}
> // Test basic client-server connection
> auto cache = CacheFactory()
> .set("log-level", "info")
> .create();
> auto poolFactory = cache.getPoolManager().createFactory();
> poolFactory.addLocator("localhost", 10334);
> auto pool = poolFactory.create("myPool");
> // Expected: Successful connection to Geode 2.0 server
> {code}
> h3. Scenario 3: Region Operations
> {code:cpp}
> // Test CRUD operations on regions
> auto regionFactory = cache.createRegionFactory(RegionShortcut::PROXY);
> auto region = regionFactory.setPoolName("myPool")
> .create("testRegion");
> region->put("key1", "value1");
> auto result = region->get("key1");
> region->remove("key1");
> // Expected: All operations succeed with Geode 2.0
> {code}
> h3. Scenario 4: Query Execution
> {code:cpp}
> // Test OQL queries
> auto queryService = cache.getQueryService();
> auto query = queryService->newQuery("SELECT * FROM /testRegion WHERE id >
> 100");
> auto results = query->execute();
> // Expected: Query results returned successfully
> {code}
> h3. Scenario 5: Security Integration
> {code:cpp}
> // Test authentication with Geode 2.0
> auto cacheFactory = CacheFactory();
> cacheFactory.set("security-username", "user");
> cacheFactory.set("security-password", "pass");
> auto secureCache = cacheFactory.create();
> // Expected: Authentication succeeds
> {code}
> h2. Known Issues & Risks
> {panel:title=Potential Risks|borderColor=#cccccc|titleBGColor=#f7d6c1}
> * *Wire Protocol Changes:* Geode 2.0 may have protocol changes requiring
> native client updates
> * *API Deprecations:* Some APIs may be deprecated/removed in Geode 2.0
> * *Build Dependencies:* Boost/OpenSSL version compatibility on newer systems
> * *Performance Regressions:* New protocol overhead or server-side changes
> * *Security Changes:* Updated authentication/authorization mechanisms{panel}
>
> h2. Timeline
> {code:java}
> Phase 1: Setup & Initial Testing (Week 1-2)
> - Download and install components
> - Verify build configuration
> - Basic connectivity tests
>
> Phase 2: Functional Testing (Week 3-5)
> - CRUD operations testing
> - Query functionality
> - Advanced features
>
> Phase 3: Performance & Stability (Week 6-8)
> - Benchmark execution
> - Load testing
> - Failover scenarios
>
> Phase 4: Documentation & Reporting (Week 9-12)
> - Create compatibility matrix
> - Write migration guide
> - Finalize test reports
> {code}
> h2. Success Metrics
> * *API compatibility* - All major APIs work with Geode 2.0
> * *Zero critical bugs* - No blocking issues for production use
> * *Performance parity* - Within 5% of Geode 1.15.x performance
> * *Clear documentation* - Users can easily determine compatibility and
> migrate
> h2. Related Resources
> * [Apache Geode 2.0 Release
> Notes|https://github.com/apache/geode/releases/tag/rel%2Fv2.0.0]
> * [Geode Native 2.0 Release
> Notes|https://github.com/apache/geode-native/releases/tag/rel%2Fv2.0.0]
> * [Geode Wire Protocol Specification|https://geode.apache.org/docs/]
> * [Geode Native Documentation|https://geode.apache.org/docs/native/]
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)