diff options
author | Gong Zhang <zhanggbj@cn.ibm.com> | 2015-05-27 17:10:17 +0800 |
---|---|---|
committer | Gong Zhang <zhanggbj@cn.ibm.com> | 2015-05-28 11:13:23 +0800 |
commit | 88e499d1c10eaae59546d9f16c9c9c262766de84 (patch) | |
tree | cc4fc7d51e58cf8b353ae4f6e9aaa3c6bac2bb5e /neutron/wsgi.py | |
parent | 420ca31da23cfe9a49b128cbce2d0b7cd9388974 (diff) | |
download | neutron-88e499d1c10eaae59546d9f16c9c9c262766de84.tar.gz |
Move pool dispose() before os.fork
Currently pool dispose() is done after os.fork, but this will
produce shared DB connections in child processes which may lead
to DB errors.
Move pool dispose() before os.fork. This will remove all existing
connections in the parent process and child processes will create
their own new ones.
Change-Id: Ie36417a64f0eb39b53dad61517f834aec37bacfb
Closes-Bug: 1458718
Diffstat (limited to 'neutron/wsgi.py')
-rw-r--r-- | neutron/wsgi.py | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/neutron/wsgi.py b/neutron/wsgi.py index a31367ac6a..bbd2d8fd89 100644 --- a/neutron/wsgi.py +++ b/neutron/wsgi.py @@ -98,10 +98,6 @@ class WorkerService(object): self._server = None def start(self): - # We may have just forked from parent process. A quick disposal of the - # existing sql connections avoids producing 500 errors later when they - # are discovered to be broken. - api.dispose() if CONF.use_ssl: self._service._socket = self._service.wrap_ssl( self._service._socket) @@ -234,6 +230,10 @@ class Server(object): service.start() systemd.notify_once() else: + # dispose the whole pool before os.fork, otherwise there will + # be shared DB connections in child processes which may cause + # DB errors. + api.dispose() # The API service runs in a number of child processes. # Minimize the cost of checking for child exit by extending the # wait interval past the default of 0.01s. |