From 76e193ab0fb95e00ac1740af403f25d1d60b5bda Mon Sep 17 00:00:00 2001 From: cxhello Date: Thu, 21 May 2026 10:36:09 +0800 Subject: [PATCH 1/2] fix(transport): use async with for asyncio.Lock in ConnectResetRequestHandler The handler used synchronous 'with' on an asyncio.Lock, which does not actually acquire the lock. Change to 'async with' to properly guard the status check and server switch when handling ConnectResetRequest. Signed-off-by: cxhello --- v2/nacos/transport/rpc_client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2/nacos/transport/rpc_client.py b/v2/nacos/transport/rpc_client.py index b46710a..5543449 100644 --- a/v2/nacos/transport/rpc_client.py +++ b/v2/nacos/transport/rpc_client.py @@ -459,7 +459,7 @@ async def request_reply(self, request: Request) -> Optional[ConnectResetResponse return None try: - with self.rpc_client.lock: + async with self.rpc_client.lock: if self.rpc_client.is_running(): if request.server_ip.strip(): server_info = ServerInfo(request.server_ip, int(request.server_port)) From af397e9d8686518f98e74163d1275224ccb76ee7 Mon Sep 17 00:00:00 2001 From: cxhello Date: Thu, 21 May 2026 10:36:28 +0800 Subject: [PATCH 2/2] fix(redo): trigger redo immediately on reconnect instead of waiting up to 30s After gRPC reconnection, on_connected() only set self._connected = True. The redo task polled _execute_redo_channel with a 30-second timeout, so instance re-registration could be delayed up to 30 seconds. Now on_connected() also calls start_redo_task() to signal the channel immediately, waking the redo task to re-register instances without delay. Signed-off-by: cxhello --- v2/nacos/redo/abstract_redo_service.py | 1 + 1 file changed, 1 insertion(+) diff --git a/v2/nacos/redo/abstract_redo_service.py b/v2/nacos/redo/abstract_redo_service.py index 0acdb16..8bdef1b 100644 --- a/v2/nacos/redo/abstract_redo_service.py +++ b/v2/nacos/redo/abstract_redo_service.py @@ -22,6 +22,7 @@ def __init__(self, module:str): async def on_connected(self) -> None: self._connected = True + await self.start_redo_task() async def on_disconnect(self) -> None: self._connected = False