From 2c506ee3c8bcf924c651fddffe4f3f9a2ffd19a4 Mon Sep 17 00:00:00 2001 From: wakonig_k Date: Wed, 5 Mar 2025 20:41:33 +0100 Subject: [PATCH] fix(cli/server): handle RedisError during heartbeat emission to properly close the app even if the Redis connection is lost --- bec_widgets/cli/server.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/bec_widgets/cli/server.py b/bec_widgets/cli/server.py index 96af03f6..1f854f25 100644 --- a/bec_widgets/cli/server.py +++ b/bec_widgets/cli/server.py @@ -13,6 +13,7 @@ from bec_lib.logger import bec_logger from bec_lib.service_config import ServiceConfig from bec_lib.utils.import_utils import lazy_import from qtpy.QtCore import Qt, QTimer +from redis.exceptions import RedisError from bec_widgets.cli.rpc.rpc_register import RPCRegister from bec_widgets.qt_utils.error_popups import ErrorPopupUtility @@ -142,11 +143,14 @@ class BECWidgetsCLIServer: def emit_heartbeat(self): logger.trace(f"Emitting heartbeat for {self.gui_id}") - self.client.connector.set( - MessageEndpoints.gui_heartbeat(self.gui_id), - messages.StatusMessage(name=self.gui_id, status=self.status, info={}), - expire=10, - ) + try: + self.client.connector.set( + MessageEndpoints.gui_heartbeat(self.gui_id), + messages.StatusMessage(name=self.gui_id, status=self.status, info={}), + expire=10, + ) + except RedisError as exc: + logger.error(f"Error while emitting heartbeat: {exc}") def shutdown(self): # TODO not sure if needed when cleanup is done at level of BECConnector logger.info(f"Shutting down server with gui_id: {self.gui_id}")