Skip to content

Conversation

Mat001
Copy link
Contributor

@Mat001 Mat001 commented Oct 6, 2025

THIS PR IS A BACKUP. I'm releasing from master, which includes cmab. This branch is clean branch (pre-cmab) and includes redis sterams. This PR is here incase something goes wrong with redis-streams/cmab beta release form master.
Will remove it after a while.

Summary

  • beta release redis-sterams
  • primarily for CapitalOne customer to be tried and beta tested
  • including CMAB as well in this release, but ONLY as BETA release and we are NOT promoting it. We are quietly including CMAB here becasue it is easier than creating a new release branch pre-cmab and cherry peak redis-streams code changes which is error prone. Also CMAB is 99% done, approved and tested. The last test that remains is bug bash which will happen in the next two weeks. So CMAB is beta ready.

Issues

FSSDK-11923

Mat001 added 5 commits October 6, 2025 09:55
- Add RedisStreams implementation with retry logic and error handling
- Support configurable batch processing and connection resilience
- Add comprehensive unit tests for functionality and error scenarios
- Update configuration to support both "redis" and "redis-streams" options
- Maintain backwards compatibility with existing Redis pub/sub
- Add configuration parameters for tuning Redis Streams behavior
This commit adds Redis Streams support for reliable notification delivery:

Core Implementation:
- Add Redis Streams pub/sub implementation with consumer groups
- Implement batching and automatic message acknowledgment
- Add retry logic with exponential backoff for transient failures
- Include race condition fix for consumer group initialization
- Fix resource leak in executeWithRetry with proper defer usage

Configuration:
- Add redis-streams as notification backend option
- Support flexible Redis auth field names (auth_token, redis_secret, password)
- Add Redis Streams specific config: batch_size, flush_interval, max_retries
- Update config.yaml with Redis Streams examples

Documentation:
- Add comprehensive Redis Streams documentation (docs/redis-streams.md)
- Document configuration options, testing, and migration guide

Testing:
- Add full test coverage for Redis Streams functionality
- Add error handling tests with retry scenarios
- Add coverage tests for all pubsub error paths
- Tests for flexible password configuration in plugins

Utilities:
- Add redisauth utility for flexible password extraction
- Update ODP cache and UPS services to use redisauth

Dependencies:
- Update go.mod with required go-redis dependency

Note: This branch does NOT include CMAB. Based on redis-streams-notifications
branch but with CMAB configuration removed from config.yaml.
When reverting CMAB, Git incorrectly changed some import paths:
- Fix plugins/odpcache/registry.go: use pkg/cache instead of pkg/odp/cache
- Fix pkg/optimizely/cache.go: use odpCachePkg from pkg/cache
- Fix pkg/optimizely/client.go: use pkg/cache import
- Add missing GetAttributeKeyByID method to TestProjectConfig

These changes align with go-sdk PR #420 which reorganized cache packages.
Change from pkg/odp/cache to pkg/cache to match go-sdk cache reorganization.
@Mat001 Mat001 self-assigned this Oct 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant