Browse code

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

Ian Wienand authored on 2017/04/26 09:50:29
Showing 2 changed files
... ...
@@ -218,11 +218,6 @@ function restart_apache_server {
218 218
     restart_service $APACHE_NAME
219 219
 }
220 220
 
221
-# reload_apache_server
222
-function reload_apache_server {
223
-    reload_service $APACHE_NAME
224
-}
225
-
226 221
 function write_uwsgi_config {
227 222
     local file=$1
228 223
     local wsgi=$2
... ...
@@ -267,7 +262,7 @@ function write_uwsgi_config {
267 267
         apache_conf=$(apache_site_config_for $name)
268 268
         echo "ProxyPass \"${url}\" \"unix:${socket}|uwsgi://uwsgi-uds-${name}/\" retry=0 " | sudo tee $apache_conf
269 269
         enable_apache_site $name
270
-        reload_apache_server
270
+        restart_apache_server
271 271
     fi
272 272
 }
273 273
 
... ...
@@ -526,12 +526,7 @@ EOF
526 526
         enable_apache_mod $mod
527 527
     done
528 528
     enable_apache_site $b_service
529
-    # Only a reload is required to pull in new vhosts
530
-    # Note that a restart reliably fails on centos7 and trusty
531
-    # because apache can't open port 80 because the old apache
532
-    # still has it open. Using reload fixes trusty but centos7
533
-    # still doesn't work.
534
-    reload_apache_server
529
+    restart_apache_server
535 530
 }
536 531
 
537 532
 # Follow TLS proxy