{"id":"e64c02ae289ae607","repo":"redis/redis-py","slug":"all-slots-are-not-covered-after-query-all-startup-e64c02","errorCode":null,"errorMessage":"All slots are not covered after query all startup_nodes. {len(tmp_slots)} of {REDIS_CLUSTER_HASH_SLOTS} covered...","messagePattern":"All slots are not covered after query all startup_nodes\\. (.+?) of (.+?) covered\\.\\.\\.","errorType":"exception","errorClass":"RedisClusterException","httpStatus":null,"severity":"error","filePath":"redis/cluster.py","lineNumber":2786,"sourceCode":"                if fully_covered:\n                    # Don't need to continue to the next startup node if all\n                    # slots are covered\n                    break\n\n            if not startup_nodes_reachable:\n                raise RedisClusterException(\n                    f\"Redis Cluster cannot be connected. Please provide at least \"\n                    f\"one reachable node: {str(exception)}\"\n                ) from exception\n\n            # Create Redis connections to all nodes\n            self.create_redis_connections(list(tmp_nodes_cache.values()))\n\n            # Check if the slots are not fully covered\n            if not fully_covered and self._require_full_coverage:\n                # Despite the requirement that the slots be covered, there\n                # isn't a full coverage\n                raise RedisClusterException(\n                    f\"All slots are not covered after query all startup_nodes. \"\n                    f\"{len(tmp_slots)} of {REDIS_CLUSTER_HASH_SLOTS} \"\n                    f\"covered...\"\n                )\n\n            # Set the tmp variables to the real variables\n            with self._lock:\n                self.nodes_cache = tmp_nodes_cache\n                self.slots_cache = tmp_slots\n                # Set the default node\n                self.default_node = self.get_nodes_by_server_type(PRIMARY)[0]\n                if self._dynamic_startup_nodes:\n                    # Populate the startup nodes with all discovered nodes\n                    self.startup_nodes = tmp_nodes_cache\n                # Increment the epoch to signal that initialization has completed\n                self._epoch += 1\n            # Dispatch so listeners (e.g. ClusterPubSub) can reconcile per-node\n            # state after slot ownership may have changed. A listener must not","sourceCodeStart":2768,"sourceCodeEnd":2804,"githubUrl":"https://github.com/redis/redis-py/blob/da03cdc7e8731092b13e395605c3c1fb2de25de1/redis/cluster.py#L2768-L2804","documentation":"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.","triggerScenarios":"Thrown at redis/cluster.py:2786 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"da03cdc7e8731092b13e395605c3c1fb2de25de1","analyzedAt":"2026-08-04T20:26:47.563Z","schemaVersion":2}