From 7c617a160bf82345fe33189cf25220d6431d9c1c Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Thu, 26 Aug 2021 11:52:22 -0400 Subject: [PATCH] Close socket in relay_data Closing the socket outside of relay_data causes relay_data to stay alive, causing eventlet to think a filehandle is open that is not. A reasonable question would be why eventlet fails to error that read when the filehandle is closed, but for now, move the close activity to the relay_data handler. This resolves "Second simultaneous read on fileno" conditions introduced by the fix for leaking filehandles. --- confluent_server/confluent/consoleserver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/confluent_server/confluent/consoleserver.py b/confluent_server/confluent/consoleserver.py index 81f97b27..b7023361 100644 --- a/confluent_server/confluent/consoleserver.py +++ b/confluent_server/confluent/consoleserver.py @@ -658,6 +658,7 @@ class ProxyConsole(object): while data: self.data_handler(data) data = tlvdata.recv(self.remote) + self.remote.close() def get_buffer_age(self): # the server sends a buffer age if appropriate, no need to handle @@ -720,7 +721,6 @@ class ProxyConsole(object): if self.remote: try: tlvdata.send(self.remote, {'operation': 'stop'}) - self.remote.close() except Exception: pass self.clisession = None