Always restart apache

As described in [1], it seems that mod_wsgi is not "graceful" reload
safe.  Upon re-init, it can end up in a segfault loop.

The "reload" (not *restart*) after setting up uwsgi was added with
I1d89be1f1b36f26eaf543b99bde6fdc5701474fe but not causing an issue
until uwsgi was enabled.

We do not notice in the gate, because the TLS setup ends up doing a
restart after this setup.  In the period between the
write_uwsgi_config and that restart, Apache is sitting in a segfault
loop, but we never noticed because we don't try talking to it.  Other
jobs that don't do any further apache configuration have started
failing, however.

Looking at the original comments around "reload_apache_server" I'm not
sure if it is still necessary.  [2] shows it is not used outside these
two calls.

[1] https://bugzilla.redhat.com/show_bug.cgi?id=1445540
[2] http://codesearch.openstack.org/?q=reload_apache_server&i=nope&files=&repos=

Closes-Bug: #1686210
Change-Id: I5234bae0595efdcd30305a32bf9c121072a3625e
This commit is contained in:
Ian Wienand 2017-04-26 10:50:29 +10:00
parent 2eb322ab2e
commit f6a2d2cd4e
2 changed files with 2 additions and 12 deletions

View File

@ -218,11 +218,6 @@ function restart_apache_server {
restart_service $APACHE_NAME
}
# reload_apache_server
function reload_apache_server {
reload_service $APACHE_NAME
}
function write_uwsgi_config {
local file=$1
local wsgi=$2
@ -267,7 +262,7 @@ function write_uwsgi_config {
apache_conf=$(apache_site_config_for $name)
echo "ProxyPass \"${url}\" \"unix:${socket}|uwsgi://uwsgi-uds-${name}/\" retry=0 " | sudo tee $apache_conf
enable_apache_site $name
reload_apache_server
restart_apache_server
fi
}

View File

@ -526,12 +526,7 @@ EOF
enable_apache_mod $mod
done
enable_apache_site $b_service
# Only a reload is required to pull in new vhosts
# Note that a restart reliably fails on centos7 and trusty
# because apache can't open port 80 because the old apache
# still has it open. Using reload fixes trusty but centos7
# still doesn't work.
reload_apache_server
restart_apache_server
}
# Follow TLS proxy