Files
neutron/neutron/wsgi/api.py
T
Rodolfo Alonso Hernandez 76f343c586 Monkey patch the system libraries before calling them
The Neutron API with WSGI module, and specifically when using ML2/OVN,
was importing some system libraries before patching them. That was
leading to a recursion error, as reported in the related LP bug.
By calling ``eventlet_utils.monkey_patch()`` at the very beginning
of the WSGI entry point [1], this issue is fixed.

[1] WSGI entry point:
  $ cat /etc/neutron/neutron-api-uwsgi.ini
  ...
  module = neutron.wsgi.api:application

Closes-Bug: #2075147
Change-Id: If2aa37b2a510a85172da833ca20564810817d246
2024-08-28 19:00:18 +00:00

32 lines
1.1 KiB
Python

# 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.
"""WSGI application entry-point for Neutron API."""
# NOTE: the WSGI module needs to monkey patch the libraries before any other
# module loads them. That will prevent the recursion error in the SSL library
# reported in LP#2075147
# pylint: disable=wrong-import-position
from neutron.common import eventlet_utils
eventlet_utils.monkey_patch()
import threading # noqa:E402
from neutron import server # noqa:E402
from neutron.server import api_eventlet # noqa:E402
application = None
lock = threading.Lock()
with lock:
if application is None:
application = server.boot_server(api_eventlet.eventlet_api_server)