summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhen Qin <zhenqin@cisco.com>2017-09-01 13:38:05 -0400
committerVictor Stinner <vstinner@redhat.com>2018-07-13 15:22:56 +0200
commit2a567ca60715beaf213c13f6dfd4e1af55279cda (patch)
treef9a917e1eb95c6206795e5c8b56417e3abd2af4c
parent623ba0d0e6858a52cb40d3532f9e12335e53c390 (diff)
downloadoslo-messaging-2a567ca60715beaf213c13f6dfd4e1af55279cda.tar.gz
Suppress excessive debug logs when consume rabbit5.30.4
If using rabbitmq as rpc backend, oslo.messaging generates large amount of redundant timeout debug logs (several logs per second on multiple openstack services, such as nova, heat, cinder), in format of 'Timed out waiting for RPC response: Timeout while waiting on RPC response - topic: "<unknown>", RPC method: "<unknown>" info: "<unknown>'. It's because each socket timeout exception is raised to multiple levels of error recovery callback functions then logged repeatedly. However, the accompanying value of socket.timeout exception is currently always “timed out”. Besides, oslo.messaging has implemented retry mechanism to recover socket timeout failure. Therefore, IMO those logs should be suppressed, even if at debug level, to save disk space and make debugging more convenient. Change-Id: Iafc360f8d18871cff93e7fd721d793ecdef5f4a1 Closes-Bug: #1714558 (cherry picked from commit 147186c7b4aabd2155f58f61913882f7a066bcbc)
-rw-r--r--oslo_messaging/_drivers/impl_rabbit.py9
1 files changed, 4 insertions, 5 deletions
diff --git a/oslo_messaging/_drivers/impl_rabbit.py b/oslo_messaging/_drivers/impl_rabbit.py
index 036bbd0..59ecf7d 100644
--- a/oslo_messaging/_drivers/impl_rabbit.py
+++ b/oslo_messaging/_drivers/impl_rabbit.py
@@ -1033,14 +1033,13 @@ class Connection(object):
timer = rpc_common.DecayingTimer(duration=timeout)
timer.start()
- def _raise_timeout(exc):
- LOG.debug('Timed out waiting for RPC response: %s', exc)
+ def _raise_timeout():
raise rpc_common.Timeout()
def _recoverable_error_callback(exc):
if not isinstance(exc, rpc_common.Timeout):
self._new_tags = set(self._consumers.values())
- timer.check_return(_raise_timeout, exc)
+ timer.check_return(_raise_timeout)
def _error_callback(exc):
_recoverable_error_callback(exc)
@@ -1073,9 +1072,9 @@ class Connection(object):
try:
self.connection.drain_events(timeout=poll_timeout)
return
- except socket.timeout as exc:
+ except socket.timeout:
poll_timeout = timer.check_return(
- _raise_timeout, exc, maximum=self._poll_timeout)
+ _raise_timeout, maximum=self._poll_timeout)
except self.connection.channel_errors as exc:
if exc.code == 406 and exc.method_name == 'Basic.ack':
# NOTE(gordc): occasionally multiple workers will grab