[
https://issues.apache.org/jira/browse/GEODE-10558?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jinwoo Hwang reassigned GEODE-10558:
------------------------------------
Assignee: Jinwoo Hwang
> 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)