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]
