From 1c9a19f12f27c7bc91bc7114f96023bed31f754c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20=C5=BDurek?= Date: Sun, 14 Jan 2024 21:03:20 +0100 Subject: [PATCH] asyncio redis cluster: fixed reconnection when whole cluster goes down and then back online --- redis/asyncio/cluster.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/redis/asyncio/cluster.py b/redis/asyncio/cluster.py index 486053e1cc..34bbd2ee05 100644 --- a/redis/asyncio/cluster.py +++ b/redis/asyncio/cluster.py @@ -1114,6 +1114,7 @@ class NodesManager: "require_full_coverage", "slots_cache", "startup_nodes", + "_initial_startup_nodes", "address_remap", ) @@ -1125,6 +1126,7 @@ def __init__( address_remap: Optional[Callable[[str, int], Tuple[str, int]]] = None, ) -> None: self.startup_nodes = {node.name: node for node in startup_nodes} + self._initial_startup_nodes = copy.deepcopy(startup_nodes) self.require_full_coverage = require_full_coverage self.connection_kwargs = connection_kwargs self.address_remap = address_remap @@ -1247,7 +1249,7 @@ async def initialize(self) -> None: startup_nodes_reachable = False fully_covered = False exception = None - for startup_node in self.startup_nodes.values(): + for startup_node in self.startup_nodes.values() or self._initial_startup_nodes.values(): try: # Make sure cluster mode is enabled on this node if not (await startup_node.execute_command("INFO")).get(