From 5f4864cfd64329c90f56d939ea61ba74ca8d638f Mon Sep 17 00:00:00 2001 From: Corvin Lasogga Date: Fri, 13 Jan 2023 13:08:51 +0100 Subject: [PATCH] Bugfix of (#855 ) --- .../instrumentation/grpc/_server.py | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-grpc/src/opentelemetry/instrumentation/grpc/_server.py b/instrumentation/opentelemetry-instrumentation-grpc/src/opentelemetry/instrumentation/grpc/_server.py index 6a8c1ef58b..299eaeaa7e 100644 --- a/instrumentation/opentelemetry-instrumentation-grpc/src/opentelemetry/instrumentation/grpc/_server.py +++ b/instrumentation/opentelemetry-instrumentation-grpc/src/opentelemetry/instrumentation/grpc/_server.py @@ -69,8 +69,8 @@ class _OpenTelemetryServicerContext(grpc.ServicerContext): def __init__(self, servicer_context, active_span): self._servicer_context = servicer_context self._active_span = active_span - self.code = grpc.StatusCode.OK - self.details = None + self._code = grpc.StatusCode.OK + self._details = None super().__init__() def __getattr__(self, attr): @@ -119,8 +119,8 @@ def trailing_metadata(self): return self._servicer_context.trailing_metadata() def abort(self, code, details): - self.code = code - self.details = details + self._code = code + self._details = details self._active_span.set_attribute( SpanAttributes.RPC_GRPC_STATUS_CODE, code.value[0] ) @@ -135,10 +135,25 @@ def abort(self, code, details): def abort_with_status(self, status): return self._servicer_context.abort_with_status(status) + def code(self): + if not hasattr(self._servicer_context, "code"): + raise RuntimeError( + "code() is not supported with the installed version of grpcio" + ) + return self._servicer_context.code() + + def details(self): + if not hasattr(self._servicer_context, "details"): + raise RuntimeError( + "details() is not supported with the installed version of " + "grpcio" + ) + return self._servicer_context.details() + def set_code(self, code): - self.code = code + self._code = code # use details if we already have it, otherwise the status description - details = self.details or code.value[1] + details = self._details or code.value[1] self._active_span.set_attribute( SpanAttributes.RPC_GRPC_STATUS_CODE, code.value[0] ) @@ -152,12 +167,12 @@ def set_code(self, code): return self._servicer_context.set_code(code) def set_details(self, details): - self.details = details - if self.code != grpc.StatusCode.OK: + self._details = details + if self._code != grpc.StatusCode.OK: self._active_span.set_status( Status( status_code=StatusCode.ERROR, - description=f"{self.code}:{details}", + description=f"{self._code}:{details}", ) ) return self._servicer_context.set_details(details)