Adds eventlet monkey patching of select module if thread is pathed
Oslo.messaging pika driver requires patching of select module if thread is patched. Pika driver uses select call and if it is not patched onsuming messages blocks whole eventlet loop Closes-Bug: #1570242 Change-Id: I9756737309f401ebddb7475eb84725f65bca01bf
This commit is contained in:
parent
a057c409ec
commit
746d928a87
@ -407,8 +407,12 @@ def run_server(conf, logger, sock, global_conf=None):
|
||||
wsgi.WRITE_TIMEOUT = int(conf.get('client_timeout') or 60)
|
||||
|
||||
eventlet.hubs.use_hub(get_hub())
|
||||
# NOTE(sileht): monkey-patching thread is required by python-keystoneclient
|
||||
eventlet.patcher.monkey_patch(all=False, socket=True, thread=True)
|
||||
# NOTE(sileht):
|
||||
# monkey-patching thread is required by python-keystoneclient;
|
||||
# monkey-patching select is required by oslo.messaging pika driver
|
||||
# if thread is monkey-patched.
|
||||
eventlet.patcher.monkey_patch(all=False, socket=True, select=True,
|
||||
thread=True)
|
||||
eventlet_debug = config_true_value(conf.get('eventlet_debug', 'no'))
|
||||
eventlet.debug.hub_exceptions(eventlet_debug)
|
||||
wsgi_logger = NullLogger()
|
||||
|
@ -143,7 +143,8 @@ class ContainerUpdater(Daemon):
|
||||
pid2filename[pid] = tmpfilename
|
||||
else:
|
||||
signal.signal(signal.SIGTERM, signal.SIG_DFL)
|
||||
patcher.monkey_patch(all=False, socket=True, thread=True)
|
||||
patcher.monkey_patch(all=False, socket=True, select=True,
|
||||
thread=True)
|
||||
self.no_changes = 0
|
||||
self.successes = 0
|
||||
self.failures = 0
|
||||
@ -177,7 +178,7 @@ class ContainerUpdater(Daemon):
|
||||
"""
|
||||
Run the updater once.
|
||||
"""
|
||||
patcher.monkey_patch(all=False, socket=True, thread=True)
|
||||
patcher.monkey_patch(all=False, socket=True, select=True, thread=True)
|
||||
self.logger.info(_('Begin container update single threaded sweep'))
|
||||
begin = time.time()
|
||||
self.no_changes = 0
|
||||
|
@ -94,7 +94,8 @@ class ObjectUpdater(Daemon):
|
||||
pids.append(pid)
|
||||
else:
|
||||
signal.signal(signal.SIGTERM, signal.SIG_DFL)
|
||||
patcher.monkey_patch(all=False, socket=True, thread=True)
|
||||
patcher.monkey_patch(all=False, socket=True, select=True,
|
||||
thread=True)
|
||||
self.successes = 0
|
||||
self.failures = 0
|
||||
forkbegin = time.time()
|
||||
|
@ -380,6 +380,7 @@ class TestWSGI(unittest.TestCase):
|
||||
_eventlet.hubs.use_hub.assert_called_with(utils.get_hub())
|
||||
_eventlet.patcher.monkey_patch.assert_called_with(all=False,
|
||||
socket=True,
|
||||
select=True,
|
||||
thread=True)
|
||||
_eventlet.debug.hub_exceptions.assert_called_with(False)
|
||||
self.assertTrue(_wsgi.server.called)
|
||||
@ -468,6 +469,7 @@ class TestWSGI(unittest.TestCase):
|
||||
_eventlet.hubs.use_hub.assert_called_with(utils.get_hub())
|
||||
_eventlet.patcher.monkey_patch.assert_called_with(all=False,
|
||||
socket=True,
|
||||
select=True,
|
||||
thread=True)
|
||||
_eventlet.debug.hub_exceptions.assert_called_with(False)
|
||||
self.assertTrue(_wsgi.server.called)
|
||||
@ -520,6 +522,7 @@ class TestWSGI(unittest.TestCase):
|
||||
_eventlet.hubs.use_hub.assert_called_with(utils.get_hub())
|
||||
_eventlet.patcher.monkey_patch.assert_called_with(all=False,
|
||||
socket=True,
|
||||
select=True,
|
||||
thread=True)
|
||||
_eventlet.debug.hub_exceptions.assert_called_with(True)
|
||||
self.assertTrue(mock_server.called)
|
||||
|
Loading…
x
Reference in New Issue
Block a user