mirror of
https://github.com/xcat2/confluent.git
synced 2026-08-03 07:57:02 +00:00
Put the local socket in non-blocking mode in the async client
_connect_unix left the socket blocking, while _connect_tls sets a zero timeout, so every loop.sock_recv and sock_sendall against the local socket ran the blocking call inline and stalled the whole event loop. nodeconsole --video showed this most clearly: a power action opens its own session, so the tiles stopped refreshing and keystrokes went unhandled until the BMC finished. asyncio only enforces this in debug mode, where the client failed outright with ValueError: the socket must be non-blocking. The descriptor passing retries in asynctlvdata also assume a non-blocking socket, since they wait for BlockingIOError.
This commit is contained in:
@@ -396,6 +396,7 @@ class Command(object):
|
||||
self.connection = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||
self.connection.setsockopt(socket.SOL_SOCKET, SO_PASSCRED, 1)
|
||||
self.connection.connect(self.serverloc)
|
||||
self.connection.setblocking(False)
|
||||
|
||||
async def _connect_tls(self):
|
||||
server, port = _parseserver(self.serverloc)
|
||||
|
||||
Reference in New Issue
Block a user