Merge "Use StopWatch timer when waiting for message"

This commit is contained in:
Zuul 2024-04-09 13:47:33 +00:00 committed by Gerrit Code Review
commit 41fc2a2d35
1 changed files with 12 additions and 6 deletions

View File

@ -496,12 +496,18 @@ class ReplyWaiters(object):
self._wrn_threshold = 10 self._wrn_threshold = 10
def get(self, msg_id, timeout): def get(self, msg_id, timeout):
try: watch = timeutils.StopWatch(duration=timeout)
return self._queues[msg_id].get(block=True, timeout=timeout) watch.start()
except queue.Empty: while not watch.expired():
raise oslo_messaging.MessagingTimeout( try:
'Timed out waiting for a reply ' # NOTE(amorin) we can't use block=True
'to message ID %s' % msg_id) # See lp-2035113
return self._queues[msg_id].get(block=False)
except queue.Empty:
time.sleep(0.5)
raise oslo_messaging.MessagingTimeout(
'Timed out waiting for a reply '
'to message ID %s' % msg_id)
def put(self, msg_id, message_data): def put(self, msg_id, message_data):
LOG.info('Received RPC response for msg %s', msg_id) LOG.info('Received RPC response for msg %s', msg_id)