Skip to content

refactor: eliminate cluster support #65

Description

@d4vebr4cey

remove cluster support (slot support)

  • simplifies code / data structures
  • eliminates problem creating readers while not connected

Activity

  1. derekste commented on Jun 26, 2026

    @derekste
    Member

    Triage update:

    This remains aligned with the desired product direction.

    Current evidence:

    • origin/main still constructs sw::redis::RedisCluster, carries cluster-specific keyslot and cross-slot handling, and retains cluster-start.sh / create-cluster.
    • origin/redis-adapter-lite removes cluster support and is the better candidate direction, but it is still branch-only and not currently on a PR path to main.

    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.
  2. derekste commented on Sep 29, 2026

    @derekste
    Member

    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.

  3. self-assigned this
    on Sep 29, 2026
  4. bigsamich commented on Sep 30, 2026

    @bigsamich
    Contributor

    Three data points from reviewing the stack:

    1. 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 with readerProbeMs=0; a 4-line fix is suggested in the Recover owned readers across observed stream resets #111 review.
    2. Pre-existing on main: on a cluster, redis-plus-plus turns an idle blocking XREAD's TimeoutError into a generic Error after its retry. So main's legacy reader threads exit after about 1 s without data; the stack instead logs a LOG_ERR every idle second.
    3. RedisCluster re-sends a command after an I/O error. A stored explicit-ID write whose reply was lost therefore comes back as RA_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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions