From 9bd8044bbac0802736bf4a1ca237b59931cf863d Mon Sep 17 00:00:00 2001 From: Robert Bartel Date: Tue, 19 Sep 2023 15:16:54 -0400 Subject: [PATCH] Protect RequestService until eval is in stack. Protect general execution of RequestService manager class to still be usable even without the evaluation service being online in the Docker stack. --- .../dmod/requestservice/service.py | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/python/services/requestservice/dmod/requestservice/service.py b/python/services/requestservice/dmod/requestservice/service.py index 7e74d71f2..342ff9e7c 100755 --- a/python/services/requestservice/dmod/requestservice/service.py +++ b/python/services/requestservice/dmod/requestservice/service.py @@ -144,13 +144,18 @@ def __init__(self, listen_host='', service_host=data_service_host, service_port=int(data_service_port), service_ssl_dir=self.data_service_ssl_dir) - - self._evaluation_service_handler = EvaluationRequestHandler( - target_service='evaluation-service', - service_host=evaluation_service_host, - service_port=evaluation_service_port, - ssl_directory=evaluation_service_ssl_dir - ) + # This probably won't work until evaluation service is properly added in Docker stack, so wrap in try for now + try: + self._evaluation_service_handler = EvaluationRequestHandler( + target_service='evaluation-service', + service_host=evaluation_service_host, + service_port=evaluation_service_port, + ssl_directory=evaluation_service_ssl_dir + ) + self._eval_handler_exception = None + except Exception as e: + self._evaluation_service_handler = None + self._eval_handler_exception = e @property def session_manager(self): @@ -170,6 +175,10 @@ async def listener(self, websocket: WebSocketServerProtocol, path): event_type = MessageEventType.INVALID if req_message is None else req_message.get_message_event_type() if isinstance(req_message, LaunchEvaluationMessage) or isinstance(req_message, OpenEvaluationMessage): + if self._evaluation_service_handler is None: + msg = (f"{self.__class__.__name__} could not initialize evaluation handler due to " + f"{self._eval_handler_exception.__class__.__name__}: {self._eval_handler_exception!s}") + raise RuntimeError(msg) response = await self._evaluation_service_handler.handle_request( request=req_message, socket=websocket,