Repository navigation
refactor: eliminate cluster support #65
Description
Activity
Triage update:
This remains aligned with the desired product direction.
Current evidence:
origin/mainstill constructssw::redis::RedisCluster, carries cluster-specific keyslot and cross-slot handling, and retainscluster-start.sh/create-cluster.origin/redis-adapter-literemoves cluster support and is the better candidate direction, but it is still branch-only and not currently on a PR path tomain.
Recommendation:
- Treat cluster removal as part of the RedisAdapterLite path, not as a direct edit to the old adapter unless the lite path is abandoned.
- Keep the acceptance criteria explicit: single Redis instance / Unix socket support only, no cluster setup scripts, no cluster hash-slot contract in public docs.
Scope decision for the IOC 0.9.0 release: Redis Cluster is outside the supported/tested portfolio. Do not expand this release into a broad redis-adapter cluster-removal PR. Keep the underlying code/startup-helper cleanup tracked here for separately scoped future work.
The newly added cluster regression fixture was removed from #111; its reader-recovery work targets standalone Redis. The broader removal edits remain local and uncommitted, and no removal PR has been opened. Existing standalone key names, timestamps and payload contracts remain the compatibility target.
This issue is deferred, not completed, and is not a gate for the IOC 0.9.0 release.
Three data points from reviewing the stack:
- At the Recover owned readers across observed stream resets #111 head, with the default
readerProbeMs, a Cluster connection makes every reader bucket that has an owned subscription skip XREAD forever. Owned subscriptions and legacy readers under the same base key deliver nothing, silently. It works at Separate rejected stream writes from transport failures #109 and withreaderProbeMs=0; a 4-line fix is suggested in the Recover owned readers across observed stream resets #111 review. - Pre-existing on
main: on a cluster, redis-plus-plus turns an idle blocking XREAD'sTimeoutErrorinto a genericErrorafter its retry. Somain's legacy reader threads exit after about 1 s without data; the stack instead logs a LOG_ERR every idle second. RedisClusterre-sends a command after an I/O error. A stored explicit-ID write whose reply was lost therefore comes back asRA_REJECTED(see the Separate rejected stream writes from transport failures #109 review).
README.md and docs/api.md still advertise Cluster, while #111's docs say it is outside the supported portfolio.
- At the Recover owned readers across observed stream resets #111 head, with the default
remove cluster support (slot support)