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

Reply via email to