Merge "Re-use existing ProcessLauncher from wsgi in RPC workers" into stable/stein

This commit is contained in:
Zuul 2020-02-24 17:26:48 +00:00 committed by Gerrit Code Review
commit 55a3cb9f8a
3 changed files with 18 additions and 7 deletions

View File

@ -27,7 +27,7 @@ def eventlet_wsgi_server():
def start_api_and_rpc_workers(neutron_api):
try:
worker_launcher = service.start_all_workers()
worker_launcher = service.start_all_workers(neutron_api)
pool = eventlet.GreenPool()
api_thread = pool.spawn(neutron_api.wait)

View File

@ -243,7 +243,7 @@ class AllServicesNeutronWorker(neutron_worker.NeutronBaseWorker):
self._launcher.restart()
def _start_workers(workers):
def _start_workers(workers, neutron_api=None):
process_workers = [
plugin_worker for plugin_worker in workers
if plugin_worker.worker_process_count > 0
@ -251,9 +251,14 @@ def _start_workers(workers):
try:
if process_workers:
worker_launcher = common_service.ProcessLauncher(
cfg.CONF, wait_interval=1.0, restart_method='mutate'
)
# Get eventual already existing instance from WSGI app
worker_launcher = None
if neutron_api:
worker_launcher = neutron_api.wsgi_app.process_launcher
if worker_launcher is None:
worker_launcher = common_service.ProcessLauncher(
cfg.CONF, wait_interval=1.0, restart_method='mutate'
)
# add extra process worker and spawn there all workers with
# worker_process_count == 0
@ -285,9 +290,9 @@ def _start_workers(workers):
'details.')
def start_all_workers():
def start_all_workers(neutron_api=None):
workers = _get_rpc_workers() + _get_plugins_workers()
launcher = _start_workers(workers)
launcher = _start_workers(workers, neutron_api)
registry.publish(resources.PROCESS, events.AFTER_SPAWN, None)
return launcher

View File

@ -226,6 +226,12 @@ class Server(object):
log_format=CONF.wsgi_log_format,
socket_timeout=self.client_socket_timeout)
@property
def process_launcher(self):
if isinstance(self._server, common_service.ProcessLauncher):
return self._server
return None
class Request(wsgi.Request):