Skip to content

Commit 3370298

Browse files
async_cluster: fix simultaneous initialize (#2231)
- close startup_nodes too during client.close(), in case they are different
1 parent 2ee61f0 commit 3370298

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

redis/asyncio/cluster.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -323,14 +323,13 @@ async def initialize(self) -> "RedisCluster":
323323
if self._initialize:
324324
async with self._lock:
325325
if self._initialize:
326-
self._initialize = False
327326
try:
328327
await self.nodes_manager.initialize()
329328
await self.commands_parser.initialize(
330329
self.nodes_manager.default_node
331330
)
331+
self._initialize = False
332332
except BaseException:
333-
self._initialize = True
334333
await self.nodes_manager.close()
335334
await self.nodes_manager.close("startup_nodes")
336335
raise
@@ -343,6 +342,7 @@ async def close(self) -> None:
343342
if not self._initialize:
344343
self._initialize = True
345344
await self.nodes_manager.close()
345+
await self.nodes_manager.close("startup_nodes")
346346

347347
async def __aenter__(self) -> "RedisCluster":
348348
return await self.initialize()

tests/test_asyncio/test_cluster.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -680,13 +680,15 @@ async def test_not_require_full_coverage_cluster_down_error(
680680
else:
681681
raise e
682682

683-
async def test_can_run_concurrent_commands(self, r: RedisCluster) -> None:
684-
assert await r.ping(target_nodes=RedisCluster.ALL_NODES) is True
683+
async def test_can_run_concurrent_commands(self, request: FixtureRequest) -> None:
684+
url = request.config.getoption("--redis-url")
685+
rc = RedisCluster.from_url(url)
685686
assert all(
686687
await asyncio.gather(
687-
*(r.ping(target_nodes=RedisCluster.ALL_NODES) for _ in range(100))
688+
*(rc.echo("i", target_nodes=RedisCluster.ALL_NODES) for i in range(100))
688689
)
689690
)
691+
await rc.close()
690692

691693

692694
@pytest.mark.onlycluster

0 commit comments

Comments
 (0)