Use monkey_patch for neutron API server.
Neutron API server was not using eventlet monkey patch
thus eventlet threads couldn't be properly yielded.
This patch set API neutron server like other monkey patched
neutron services: neutron-server and neutron-rpc-server.
NOTE: this change needs apache service restart. Apache
mod_wsgi auto reload can lead to SSL RecursionError.
Co-Authored-By: Szymon Wroblewski <szymon.wroblewski@ovhcloud.com>
Closes-Bug: 1970216
Change-Id: Ib62c049cc521a548ab7e7e9584b19bdaa67b1c9d
(cherry picked from commit dcbc4beb9e
)
This commit is contained in:
parent
7d321273c1
commit
985257e1a3
@ -11,6 +11,7 @@
|
||||
# under the License.
|
||||
|
||||
from neutron import server
|
||||
from neutron.server import api_eventlet
|
||||
from neutron.server import rpc_eventlet
|
||||
from neutron.server import wsgi_eventlet
|
||||
|
||||
@ -21,3 +22,7 @@ def main():
|
||||
|
||||
def main_rpc_eventlet():
|
||||
server.boot_server(rpc_eventlet.eventlet_rpc_server)
|
||||
|
||||
|
||||
def main_api_eventlet():
|
||||
return server.boot_server(api_eventlet.eventlet_api_server)
|
||||
|
@ -23,7 +23,6 @@ from oslo_config import cfg
|
||||
|
||||
from neutron._i18n import _
|
||||
from neutron.common import config
|
||||
from neutron.common import profiler
|
||||
|
||||
# NOTE(annp): These environment variables are required for deploying
|
||||
# neutron-api under mod_wsgi. Currently, these variables are set as DevStack's
|
||||
@ -65,14 +64,8 @@ def _init_configuration():
|
||||
def boot_server(server_func):
|
||||
_init_configuration()
|
||||
try:
|
||||
server_func()
|
||||
return server_func()
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
except RuntimeError as e:
|
||||
sys.exit(_("ERROR: %s") % e)
|
||||
|
||||
|
||||
def get_application():
|
||||
_init_configuration()
|
||||
profiler.setup('neutron-server', cfg.CONF.host)
|
||||
return config.load_paste_app('neutron')
|
||||
|
25
neutron/server/api_eventlet.py
Normal file
25
neutron/server/api_eventlet.py
Normal file
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright (c) 2022, OVH SAS
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from oslo_config import cfg
|
||||
|
||||
from neutron.common import config
|
||||
from neutron.common import profiler
|
||||
|
||||
|
||||
def eventlet_api_server():
|
||||
profiler.setup('neutron-server', cfg.CONF.host)
|
||||
return config.load_paste_app('neutron')
|
Loading…
Reference in New Issue
Block a user