@@ -264,9 +264,20 @@ async def start(self):
264264 self .ts_log_file .close ()
265265 self .ts_log_file = None
266266 self .process = None
267- raise RuntimeError (
268- "WebSocket server failed to start within timeout"
269- )
267+
268+ error_msg = "WebSocket server failed to start within timeout"
269+ import psutil
270+
271+ mem = psutil .virtual_memory ()
272+ if mem .available < 1024 ** 3 : # Less than 1GB available
273+ error_msg = (
274+ f"WebSocket server failed to start"
275+ f"(likely due to insufficient memory). "
276+ f"Available memory: { mem .available / 1024 ** 3 :.2f} GB "
277+ f"({ mem .percent } % used)"
278+ )
279+
280+ raise RuntimeError (error_msg )
270281
271282 # Connect to the WebSocket server
272283 try :
@@ -291,9 +302,21 @@ async def start(self):
291302 self .ts_log_file .close ()
292303 self .ts_log_file = None
293304 self .process = None
294- raise RuntimeError (
295- f"Failed to connect to WebSocket server: { e } "
296- ) from e
305+
306+ error_msg = f"Failed to connect to WebSocket server: { e } "
307+ import psutil
308+
309+ mem = psutil .virtual_memory ()
310+ if mem .available < 1024 ** 3 : # Less than 1GB available
311+ error_msg = (
312+ f"Failed to connect to WebSocket server"
313+ f"(likely due to insufficient memory). "
314+ f"Available memory: { mem .available / 1024 ** 3 :.2f} GB"
315+ f"({ mem .percent } % used). "
316+ f"Original error: { e } "
317+ )
318+
319+ raise RuntimeError (error_msg ) from e
297320
298321 # Start the background receiver task
299322 self ._receive_task = asyncio .create_task (self ._receive_loop ())
@@ -443,7 +466,19 @@ async def _receive_loop(self):
443466 async def _ensure_connection (self ) -> None :
444467 """Ensure WebSocket connection is alive."""
445468 if not self .websocket :
446- raise RuntimeError ("WebSocket not connected" )
469+ error_msg = "WebSocket not connected"
470+ import psutil
471+
472+ mem = psutil .virtual_memory ()
473+ if mem .available < 1024 ** 3 : # Less than 1GB available
474+ error_msg = (
475+ f"WebSocket not connected "
476+ f"(likely due to insufficient memory). "
477+ f"Available memory: { mem .available / 1024 ** 3 :.2f} GB "
478+ f"({ mem .percent } % used)"
479+ )
480+
481+ raise RuntimeError (error_msg )
447482
448483 # Check if connection is still alive
449484 try :
@@ -453,7 +488,20 @@ async def _ensure_connection(self) -> None:
453488 except Exception as e :
454489 logger .warning (f"WebSocket ping failed: { e } " )
455490 self .websocket = None
456- raise RuntimeError ("WebSocket connection lost" )
491+
492+ error_msg = "WebSocket connection lost"
493+ import psutil
494+
495+ mem = psutil .virtual_memory ()
496+ if mem .available < 1024 ** 3 : # Less than 1GB available
497+ error_msg = (
498+ f"WebSocket connection lost "
499+ f"(likely due to insufficient memory). "
500+ f"Available memory: { mem .available / 1024 ** 3 :.2f} GB "
501+ f"({ mem .percent } % used)"
502+ )
503+
504+ raise RuntimeError (error_msg )
457505
458506 async def _send_command (
459507 self , command : str , params : Dict [str , Any ]
0 commit comments