diff options
author | Raymond Pekowski <pekowski@gmail.com> | 2013-06-25 04:24:05 +0000 |
---|---|---|
committer | Raymond Pekowski <pekowski@gmail.com> | 2013-06-25 21:49:50 +0000 |
commit | 22ec8ff616a799085239e3e529daeeefea6366c4 (patch) | |
tree | f7a0802d0ef438dcbb31ff62c0fbea43d0b269b2 /openstack/common/rpc/impl_kombu.py | |
parent | bc10b7aeada4ea66e85e10b94b5c219e3c8d2e77 (diff) | |
download | oslo-22ec8ff616a799085239e3e529daeeefea6366c4.tar.gz oslo-22ec8ff616a799085239e3e529daeeefea6366c4.tar.xz oslo-22ec8ff616a799085239e3e529daeeefea6366c4.zip |
Make AMQP based RPC consumer threads more robust
bug 1189711 Should RPC consume_in_thread() be more fault tolerant?
There are unprotected holes in the thread kicked off by RPC
consume_in_thread such that an exception will kill the thread.
This exists for both the service (TopicConsumer) and the new
reply proxy (DirectConsumer) consumers. This patch plugs
those holes as close to the base of the consumer thread as
possible by catching all non-caught exceptions and retrying
with sleeps between retries and some pacing of the log
output to prevent log flooding.
Change-Id: I0d6ec8a5e3a310314da201656ee862bb40b41616
Diffstat (limited to 'openstack/common/rpc/impl_kombu.py')
-rw-r--r-- | openstack/common/rpc/impl_kombu.py | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/openstack/common/rpc/impl_kombu.py b/openstack/common/rpc/impl_kombu.py index 716b120..8fb3504 100644 --- a/openstack/common/rpc/impl_kombu.py +++ b/openstack/common/rpc/impl_kombu.py @@ -30,6 +30,7 @@ import kombu.entity import kombu.messaging from oslo.config import cfg +from openstack.common import excutils from openstack.common.gettextutils import _ from openstack.common import network_utils from openstack.common.rpc import amqp as rpc_amqp @@ -748,6 +749,7 @@ class Connection(object): def consume_in_thread(self): """Consumer from all queues/consumers in a greenthread.""" + @excutils.forever_retry_uncaught_exceptions def _consumer_thread(): try: self.consume() |