Jinwoo Hwang created GEODE-10558:
------------------------------------

             Summary: 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


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