From 5a1f35815d6c8a0cfd5a1e1f178a481604b602c5 Mon Sep 17 00:00:00 2001 From: Pedro Crespo-Valero <32402063+pcrespov@users.noreply.github.com> Date: Mon, 26 May 2025 15:14:43 +0200 Subject: [PATCH 1/3] fixes raised error --- .../exception_handling/_factory.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/services/web/server/src/simcore_service_webserver/exception_handling/_factory.py b/services/web/server/src/simcore_service_webserver/exception_handling/_factory.py index 29abf093cd0..e61d7a54c2b 100644 --- a/services/web/server/src/simcore_service_webserver/exception_handling/_factory.py +++ b/services/web/server/src/simcore_service_webserver/exception_handling/_factory.py @@ -14,9 +14,9 @@ _logger = logging.getLogger(__name__) -_STATUS_CODE_TO_HTTP_ERRORS: dict[ - int, type[web.HTTPError] -] = get_all_aiohttp_http_exceptions(web.HTTPError) +_STATUS_CODE_TO_HTTP_ERRORS: dict[int, type[web.HTTPError]] = ( + get_all_aiohttp_http_exceptions(web.HTTPError) +) class _DefaultDict(dict): @@ -40,7 +40,8 @@ def create_error_response(error: ErrorGet, status_code: int) -> web.Response: return web.json_response( data={"error": error.model_dump(exclude_unset=True, mode="json")}, dumps=json_dumps, - reason=error.message, + # NOTE: Multiline not allowed in StreamReponse's reason attribute + reason=error.message.replace("\n", " ") if error.message else None, status=status_code, ) From fd79f8c2e769b83602257c6c3498d19889a92afa Mon Sep 17 00:00:00 2001 From: Pedro Crespo-Valero <32402063+pcrespov@users.noreply.github.com> Date: Mon, 26 May 2025 15:15:21 +0200 Subject: [PATCH 2/3] doc --- .../simcore_service_webserver/exception_handling/_factory.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/server/src/simcore_service_webserver/exception_handling/_factory.py b/services/web/server/src/simcore_service_webserver/exception_handling/_factory.py index e61d7a54c2b..29e3e325117 100644 --- a/services/web/server/src/simcore_service_webserver/exception_handling/_factory.py +++ b/services/web/server/src/simcore_service_webserver/exception_handling/_factory.py @@ -40,7 +40,7 @@ def create_error_response(error: ErrorGet, status_code: int) -> web.Response: return web.json_response( data={"error": error.model_dump(exclude_unset=True, mode="json")}, dumps=json_dumps, - # NOTE: Multiline not allowed in StreamReponse's reason attribute + # NOTE: Multiline not allowed in HTTP reason attribute (aiohttp now raises ValueError) reason=error.message.replace("\n", " ") if error.message else None, status=status_code, ) From 206fa0dcc4431dbd6bc2694fdb7fa0c56402d2b9 Mon Sep 17 00:00:00 2001 From: Pedro Crespo-Valero <32402063+pcrespov@users.noreply.github.com> Date: Mon, 26 May 2025 15:17:16 +0200 Subject: [PATCH 3/3] other --- .../src/simcore_service_webserver/exporter/exceptions.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/web/server/src/simcore_service_webserver/exporter/exceptions.py b/services/web/server/src/simcore_service_webserver/exporter/exceptions.py index 66f0833985b..baeff42bead 100644 --- a/services/web/server/src/simcore_service_webserver/exporter/exceptions.py +++ b/services/web/server/src/simcore_service_webserver/exporter/exceptions.py @@ -6,4 +6,5 @@ class SDSException(HTTPBadRequest): # pylint: disable=too-many-ancestors """Basic exception for errors raised inside the module""" def __init__(self, message: str): - super().__init__(reason=message) + # Multiline not allowed in HTTP reason attribute + super().__init__(reason=message.replace("\n", " ") if message else None)