alberttwong opened a new pull request, #11919:
URL: https://github.com/apache/nifi/pull/11919

   # Summary
   
   [NIFI-16582](https://issues.apache.org/jira/browse/NIFI-16582)
   
   RedisDistributedMapCacheClientService rejects Cluster connection pools and 
uses WATCH/MULTI/EXEC for conditional cache operations. This change uses 
single-key Lua scripts for get-and-insert and compare-and-set, and SET NX with 
expiration for conditional inserts. It preserves existing serialization, 
raw-value revisions, and TTL behavior while accepting Cluster connections.
   
   Redis Enterprise Software and Redis Cloud proxy endpoints already work with 
Standalone connections and the existing ACL/TLS properties. New component 
documentation and property descriptions explain that topology, database 
endpoint configuration, scripting permissions, and the limits of atomicity 
across Active-Active regions. The SimpleRedisDistributedMapCacheClientService 
implementation is unchanged.
   
   # Tracking
   
   - [x] Apache NiFi Jira issue created: NIFI-16582
   - [x] PR title and commit message start with NIFI-16582
   - [x] Single GitHub-signed commit
   - Draft pending the remaining acceptance checks listed below.
   - Based on current main at `2d651dc1646ac3a38f1bfc00d60a9727077a558e`.
   - One commit containing six changed files.
   
   # Verification
   
   - JDK 21 reactor build and Redis NAR packaging passed.
   - 6 unit cases and 24 integration cases passed, with no failures or skips.
   - Integration coverage runs the 12-case contract against an authenticated 
Redis 8.8 standalone endpoint and again against a one-node Redis Cluster owning 
all 16,384 slots. Both endpoints deny WATCH, MULTI, and EXEC and disable the 
default user.
   - Tests cover binary/empty values, stale/missing revisions, positive/zero 
TTL, expiration on success/conflict, and competing inserts/replacements with 
exactly one winner.
   - Checkstyle passed for both changed modules; `git diff --check` and patch 
applicability passed.
   
   ```sh
   ./mvnw -B -P integration-tests \
     -pl nifi-extension-bundles/nifi-redis-bundle/nifi-redis-nar -am verify \
     
-Dtest=TestRedisConnectionPoolService,TestRedisDistributedMapCacheClientService 
\
     -Dsurefire.failIfNoSpecifiedTests=false \
     
-Dit.test=ITRedisDistributedMapCacheClientService,ITRedisClusterDistributedMapCacheClientService
 \
     -Dfailsafe.failIfNoSpecifiedTests=false
   ```
   
   ### Build
   
   - [ ] Full `./mvnw clean install -P contrib-check`
   - [x] Targeted JDK 21 build and integration tests
   - [ ] JDK 25
   
   ### Licensing
   
   No dependencies added or upgraded; no dependency LICENSE/NOTICE changes.
   
   ### Documentation
   
   - [x] Component details and connection-property descriptions updated
   - [ ] Documentation visually checked in a running NiFi instance
   
   ### Remaining acceptance coverage
   
   Live Redis Enterprise Software/Redis Cloud endpoints, network TLS/mTLS 
handshakes, multi-node failover, and resharding have not been exercised. 
Single-endpoint atomic operations do not provide globally serialized 
compare-and-set across independent writable Active-Active regions. Bulk putAll 
keeps its existing MSET behavior and adds no cross-slot transaction guarantee.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to