From a2003459ccd4d93ca79bddcb577b24bc29490d1b Mon Sep 17 00:00:00 2001 From: Lluis Gifre <lluis.gifre@cttc.es> Date: Fri, 11 Mar 2022 19:15:38 +0100 Subject: [PATCH] Common: - improved loggers in decorators for client and server methods - corrected error in delay_exponential for retry decorator --- src/common/rpc_method_wrapper/Decorator.py | 5 +++-- src/common/tools/client/RetryDecorator.py | 2 +- src/common/tools/grpc/Tools.py | 5 +++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/common/rpc_method_wrapper/Decorator.py b/src/common/rpc_method_wrapper/Decorator.py index 212481b73..31dc4b82b 100644 --- a/src/common/rpc_method_wrapper/Decorator.py +++ b/src/common/rpc_method_wrapper/Decorator.py @@ -17,6 +17,7 @@ from enum import Enum from typing import Dict, List from prometheus_client import Counter, Histogram from prometheus_client.metrics import MetricWrapperBase +from common.tools.grpc.Tools import grpc_message_to_json_string from .ServiceExceptions import ServiceException class RequestConditionEnum(Enum): @@ -62,9 +63,9 @@ def safe_and_metered_rpc_method(metrics : Dict[str, MetricWrapperBase], logger : def inner_wrapper(self, request, grpc_context : grpc.ServicerContext): COUNTER_STARTED.inc() try: - logger.debug('{:s} request: {:s}'.format(function_name, str(request))) + logger.debug('{:s} request: {:s}'.format(function_name, grpc_message_to_json_string(request))) reply = func(self, request, grpc_context) - logger.debug('{:s} reply: {:s}'.format(function_name, str(reply))) + logger.debug('{:s} reply: {:s}'.format(function_name, grpc_message_to_json_string(reply))) COUNTER_COMPLETED.inc() return reply except ServiceException as e: # pragma: no cover (ServiceException not thrown) diff --git a/src/common/tools/client/RetryDecorator.py b/src/common/tools/client/RetryDecorator.py index d7bcdb42d..9a1c0d69f 100644 --- a/src/common/tools/client/RetryDecorator.py +++ b/src/common/tools/client/RetryDecorator.py @@ -57,7 +57,7 @@ def delay_linear(initial=0, increment=0, maximum=None): def delay_exponential(initial=1, increment=1, maximum=None): def compute(num_try): - delay = initial * pow((num_try - 1), increment) + delay = initial * pow(increment, (num_try - 1)) if maximum is not None: delay = max(delay, maximum) return delay return compute diff --git a/src/common/tools/grpc/Tools.py b/src/common/tools/grpc/Tools.py index 7c6a74348..f0c72a36f 100644 --- a/src/common/tools/grpc/Tools.py +++ b/src/common/tools/grpc/Tools.py @@ -16,8 +16,9 @@ import json from google.protobuf.json_format import MessageToDict def grpc_message_to_json( - message, including_default_value_fields=True, preserving_proto_field_name=True, use_integers_for_enums=False): - + message, including_default_value_fields=True, preserving_proto_field_name=True, use_integers_for_enums=False + ): + if not hasattr(message, 'DESCRIPTOR'): return json.dumps(str(message), sort_keys=True) # not a gRPC message return MessageToDict( message, including_default_value_fields=including_default_value_fields, preserving_proto_field_name=preserving_proto_field_name, use_integers_for_enums=use_integers_for_enums) -- GitLab