redis: support Sentinel and Cluster, and set explicit client timeouts

Open
#2,358 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@neochaotic is already working on this.

Since Nov 6, 2026.

  • #2406 by @neochaotic — open

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
38/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
go, helm, kubernetes, redis

Research direction

Start by reading storage.NewRedis, FetchMany, and the transient error classification in internal/storeerr; inspect the chart values for the Redis options. Then trace the XCom key construction and existing integration tests to understand how Sentinel failover and Cluster key grouping are exercised. Done means a Sentinel failover integration test passes while tasks push and fetch XCom, transient errors are tolerated during the failover window, and the options have documented defaults.

Written by the indexing model from the issue text.

Description

area/config area/storage enhancement priority/p2

Why

storage.NewRedis builds a single node client from a URL with library defaults for pool size and timeouts. A managed Redis with one failover endpoint works, but self-managed Sentinel or Redis Cluster does not, and the 3 s default read timeout is long for the live tail path.

What

  • Build the client with redis.NewUniversalClient, configured from the URL or explicit keys (redis.sentinel.master, redis.sentinel.addrs, redis.cluster.addrs), with chart values to match.
  • In Cluster mode, keys read together by FetchMany share a hash tag (the run part of the XCom key).
  • Explicit dial_timeout, read_timeout, write_timeout and pool_size with documented defaults.

Done when

An integration test fails over a Sentinel pair while tasks push and fetch XCom, the transient error classification (internal/storeerr) rides through the window without failing tasks, and the options are documented.


Generated by Claude Code

Dominant language
Go
Stars
46
Forks
1
Avg merge
10h 26m
Merged PRs (30d)
606

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from dexadata/dexaflow

All issues in dexadata/dexaflow

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.