Commit a2003459 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Common:

- improved loggers in decorators for client and server methods
- corrected error in delay_exponential for retry decorator
parent f03b9644
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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)
+1 −1
Original line number Diff line number Diff line
@@ -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
+3 −2
Original line number Diff line number Diff line
@@ -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)