From b7dd0fabc8526b0f314234258bff0129a4e14ade Mon Sep 17 00:00:00 2001 From: Andrei Denissov Date: Wed, 30 Jul 2025 15:24:32 -0700 Subject: [PATCH] Add debug check for missing request metadata. --- .../http/handlers/base_request_handler.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/neuro_san/service/http/handlers/base_request_handler.py b/neuro_san/service/http/handlers/base_request_handler.py index c697a021f..559bb12ad 100644 --- a/neuro_san/service/http/handlers/base_request_handler.py +++ b/neuro_san/service/http/handlers/base_request_handler.py @@ -63,6 +63,7 @@ def initialize(self, self.openapi_service_spec_path: str = openapi_service_spec_path self.logger = HttpLogger(forwarded_request_metadata) self.network_storage_dict: Dict[str, AgentNetworkStorage] = network_storage_dict + self.show_absent: bool = os.environ.get("SHOW_ABSENT_METADATA") is not None # Set default request_id for this request handler in case we will need it: BaseRequestHandler.request_id += 1 @@ -83,15 +84,27 @@ def get_metadata(self) -> Dict[str, Any]: from incoming request. :return: dictionary of user request metadata; possibly empty """ - return BaseRequestHandler.get_request_metadata(self.request, self.forwarded_request_metadata) + return BaseRequestHandler.get_request_metadata( + self.request, + self.forwarded_request_metadata, + self.show_absent, + self.logger) @classmethod - def get_request_metadata(cls, request, forwarded_request_metadata: List[str]) -> Dict[str, Any]: + def get_request_metadata(cls, request, + forwarded_request_metadata: List[str], + show_absent: bool = False, + logger: HttpLogger = None + ) -> Dict[str, Any]: """ Extract user metadata defined by forwarded_request_metadata list from incoming request. :param request: incoming http request :param forwarded_request_metadata: list of metadata keys + :param show_absent: if True, will provide debug printout + for all request metadata keys absent from incoming request headers; + if False does nothing. + :param logger: logger to use :return: dictionary of user request metadata; possibly empty """ headers: Dict[str, Any] = request.headers @@ -103,6 +116,8 @@ def get_request_metadata(cls, request, forwarded_request_metadata: List[str]) -> # Generate unique id so we have some way to track this request: result[item_name] = f"request-{BaseRequestHandler.request_id}" else: + if show_absent and logger: + logger.warning({}, "MISSING METADATA VALUE: %s request %s", item_name, request.uri) result[item_name] = "None" return result