From d7eb89eac8f76c46849f5e0d18a7ea00dc2d07bb Mon Sep 17 00:00:00 2001 From: Oleg Bondarev Date: Mon, 23 Dec 2019 11:32:28 +0400 Subject: [PATCH] Don't log NoSuchMethod for special non-existing methods Such non-existing methods are used as health probes. Please see bug for details. Change-Id: I8f6b4a669ec11721f76cf03abcd7d802c3c11eb5 Closes-Bug: #1857319 --- oslo_messaging/rpc/server.py | 14 ++++++++++---- .../no-log-if-ignore-errors-e2223b8a646b4c40.yaml | 5 +++++ 2 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 releasenotes/notes/no-log-if-ignore-errors-e2223b8a646b4c40.yaml diff --git a/oslo_messaging/rpc/server.py b/oslo_messaging/rpc/server.py index b16d77fa6..d981b88ed 100644 --- a/oslo_messaging/rpc/server.py +++ b/oslo_messaging/rpc/server.py @@ -164,12 +164,18 @@ class RPCServer(msg_server.MessageHandlingServer): try: res = self.dispatcher.dispatch(message) except rpc_dispatcher.ExpectedException as e: - failure = e.exc_info - LOG.debug(u'Expected exception during message handling (%s)', e) - except Exception: # current sys.exc_info() content can be overridden # by another exception raised by a log handler during - # LOG.exception(). So keep a copy and delete it later. + # LOG.debug(). So keep a copy and delete it later. + failure = e.exc_info + LOG.debug(u'Expected exception during message handling (%s)', e) + except rpc_dispatcher.NoSuchMethod as e: + failure = sys.exc_info() + if e.method.endswith('_ignore_errors'): + LOG.debug('Method %s not found', e.method) + else: + LOG.exception('Exception during message handling') + except Exception: failure = sys.exc_info() LOG.exception('Exception during message handling') diff --git a/releasenotes/notes/no-log-if-ignore-errors-e2223b8a646b4c40.yaml b/releasenotes/notes/no-log-if-ignore-errors-e2223b8a646b4c40.yaml new file mode 100644 index 000000000..84365cc87 --- /dev/null +++ b/releasenotes/notes/no-log-if-ignore-errors-e2223b8a646b4c40.yaml @@ -0,0 +1,5 @@ +other: + - | + NoSuchMethod exception will not be logged for special non-existing methods + which names end with '_ignore_errors'. Such methods might be used + as health probes for openstack services.