redis/redis-py · error · RedisClusterException
All slots are not covered after query all startup_nodes. {le
Error message
All slots are not covered after query all startup_nodes. {len(tmp_slots)} of {REDIS_CLUSTER_HASH_SLOTS} covered... What it means
Error "All slots are not covered after query all startup_nodes. {len(tmp_slots)} of {REDIS_CLUSTER_HASH_SLOTS} covered..." thrown in redis/redis-py.
Source
Thrown at redis/cluster.py:2786
if fully_covered:
# Don't need to continue to the next startup node if all
# slots are covered
break
if not startup_nodes_reachable:
raise RedisClusterException(
f"Redis Cluster cannot be connected. Please provide at least "
f"one reachable node: {str(exception)}"
) from exception
# Create Redis connections to all nodes
self.create_redis_connections(list(tmp_nodes_cache.values()))
# Check if the slots are not fully covered
if not fully_covered and self._require_full_coverage:
# Despite the requirement that the slots be covered, there
# isn't a full coverage
raise RedisClusterException(
f"All slots are not covered after query all startup_nodes. "
f"{len(tmp_slots)} of {REDIS_CLUSTER_HASH_SLOTS} "
f"covered..."
)
# Set the tmp variables to the real variables
with self._lock:
self.nodes_cache = tmp_nodes_cache
self.slots_cache = tmp_slots
# Set the default node
self.default_node = self.get_nodes_by_server_type(PRIMARY)[0]
if self._dynamic_startup_nodes:
# Populate the startup nodes with all discovered nodes
self.startup_nodes = tmp_nodes_cache
# Increment the epoch to signal that initialization has completed
self._epoch += 1
# Dispatch so listeners (e.g. ClusterPubSub) can reconcile per-node
# state after slot ownership may have changed. A listener must notView on GitHub (pinned to da03cdc7e8)
When it happens
Trigger: Thrown at redis/cluster.py:2786 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of redis/redis-py@da03cdc7e8 (2026-08-04).
Data as JSON: /data/errors/e64c02ae289ae607.json.
Report an issue: GitHub.