2
0
mirror of https://github.com/xcat2/confluent.git synced 2026-09-02 15:36:05 +00:00

Close the TSM console web session

TsmConsole created an aiohttp ClientSession and never closed it, and leaked it
again when ws_connect failed. Neither was reachable before the connection path
was repaired. It is closed on both paths, and starts as None so that closing
before a connect does not trip over a missing attribute.
This commit is contained in:
Markus Hilger
2026-08-10 04:39:28 +02:00
parent c9d7343e02
commit e828ed4ff4
@@ -83,6 +83,7 @@ class TsmConsole(conapi.Console):
self.nodeconfig = config
self.connected = False
self.recvr = None
self.clisess = None
async def recvdata(self):
@@ -117,9 +118,14 @@ class TsmConsole(conapi.Console):
raise cexc.TargetEndpointUnreachable(str(e))
self.ssl = CustomVerifier(kv)
self.clisess = aiohttp.ClientSession(cookie_jar=wc.cookies)
self.ws = await self.clisess.ws_connect(
'wss://{0}/sol?CSRFTOKEN={1}'.format(self.bmc, rcoem.csrftok),
ssl=self.ssl)
try:
self.ws = await self.clisess.ws_connect(
'wss://{0}/sol?CSRFTOKEN={1}'.format(self.bmc, rcoem.csrftok),
ssl=self.ssl)
except Exception:
await self.clisess.close()
self.clisess = None
raise
self.connected = True
self.recvr = tasks.spawn_task(self.recvdata())
return
@@ -137,6 +143,10 @@ class TsmConsole(conapi.Console):
self.recvr = None
if self.ws:
await self.ws.close()
self.ws = None
if self.clisess:
await self.clisess.close()
self.clisess = None
self.connected = False
self.datacallback = None