Uploaded to Bionic-unapproved

** Description changed:

  [Impact]
  
-  * The master process will exit with the status of the last worker. 
-    When the worker is killed with SIGTERM, it is expected to get 143 as an
-    exit status. Therefore, we consider this exit status as normal from a
-    systemd point of view. If it happens when not stopping, the systemd
-    unit is configured to always restart, so it has no adverse effect.
+  * The master process will exit with the status of the last worker.
+    When the worker is killed with SIGTERM, it is expected to get 143 as an
+    exit status. Therefore, we consider this exit status as normal from a
+    systemd point of view. If it happens when not stopping, the systemd
+    unit is configured to always restart, so it has no adverse effect.
  
-  * Backport upstream fix - adding another accepted RC to the systemd 
-    service
+  * Backport upstream fix - adding another accepted RC to the systemd
+    service
  
  [Test Case]
  
-  * You want to install haproxy and have it running. Then sigterm it a lot.
-    With the fix it would restart the service all the time, well except 
-    restart limit. But in the bad case it will just stay down and didn't 
-    even try to restart it.
+  * You want to install haproxy and have it running. Then sigterm it a lot.
+    With the fix it would restart the service all the time, well except
+    restart limit. But in the bad case it will just stay down and didn't
+    even try to restart it.
  
-    $ apt install haproxy
-    $ for x in {1..100}; do pkill -TERM -x haproxy ; sleep 0.1 ; done
-    $ systemctl status haproxy
+    $ apt install haproxy
+    $ for x in {1..100}; do pkill -TERM -x haproxy ; sleep 0.1 ; done
+    $ systemctl status haproxy
+ 
+    The above is a hacky way to trigger some A/B behavior on the fix.
+    It isn't perfect as systemd restart counters will kick in and you 
+    essentially check a secondary symptom.
+    I'd recommend to in addition run the following:
+ 
+    $ apt install haproxy
+    $ for x in {1..1000}; do pkill -TERM -x haproxy ; sleep 0.001 systemctl 
+ reset-failed haproxy.service; done
+    $ systemctl status haproxy
+ 
+    You can do so with even smaller sleeps, that should keep the service up 
+    and running (this isn't changing with the fix, but should work with the 
new code).
  
  [Regression Potential]
  
-  * This eventually is a conffile modification, so if there are other 
-    modifications done by the user they will get a prompt. But that isn't a 
-    regression. I checked the code and I can't think of another RC=143 that 
-    would due to that "no more" detected as error. I really think other 
-    than the update itself triggering a restart (as usual for services) 
-    there is no further regression potential to this.
+  * This eventually is a conffile modification, so if there are other
+    modifications done by the user they will get a prompt. But that isn't a
+    regression. I checked the code and I can't think of another RC=143 that
+    would due to that "no more" detected as error. I really think other
+    than the update itself triggering a restart (as usual for services)
+    there is no further regression potential to this.
  
  [Other Info]
-  
-  * Fix already active in IS hosted cloud without issues since a while
-  * Also reports (comment #5) show that others use this in production as 
-    well
+ 
+  * Fix already active in IS hosted cloud without issues since a while
+  * Also reports (comment #5) show that others use this in production as
+    well
  
  ---
  
  On a Bionic/Stein cloud, after a network partition, we saw several units
  (glance, swift-proxy and cinder) fail to start haproxy, like so:
  
  root@juju-df624b-6-lxd-4:~# systemctl status haproxy.service
  ● haproxy.service - HAProxy Load Balancer
     Loaded: loaded (/lib/systemd/system/haproxy.service; enabled; vendor 
preset: enabled)
     Active: failed (Result: exit-code) since Sun 2019-10-20 00:23:18 UTC; 1h 
35min ago
       Docs: man:haproxy(1)
             file:/usr/share/doc/haproxy/configuration.txt.gz
    Process: 2002655 ExecStart=/usr/sbin/haproxy -Ws -f $CONFIG -p $PIDFILE 
$EXTRAOPTS (code=exited, status=143)
    Process: 2002649 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q $EXTRAOPTS 
(code=exited, status=0/SUCCESS)
   Main PID: 2002655 (code=exited, status=143)
  
  Oct 20 00:16:52 juju-df624b-6-lxd-4 systemd[1]: Starting HAProxy Load 
Balancer...
  Oct 20 00:16:52 juju-df624b-6-lxd-4 systemd[1]: Started HAProxy Load Balancer.
  Oct 20 00:23:18 juju-df624b-6-lxd-4 systemd[1]: Stopping HAProxy Load 
Balancer...
  Oct 20 00:23:18 juju-df624b-6-lxd-4 haproxy[2002655]: [WARNING] 292/001652 
(2002655) : Exiting Master process...
  Oct 20 00:23:18 juju-df624b-6-lxd-4 haproxy[2002655]: [ALERT] 292/001652 
(2002655) : Current worker 2002661 exited with code 143
  Oct 20 00:23:18 juju-df624b-6-lxd-4 haproxy[2002655]: [WARNING] 292/001652 
(2002655) : All workers exited. Exiting... (143)
  Oct 20 00:23:18 juju-df624b-6-lxd-4 systemd[1]: haproxy.service: Main process 
exited, code=exited, status=143/n/a
  Oct 20 00:23:18 juju-df624b-6-lxd-4 systemd[1]: haproxy.service: Failed with 
result 'exit-code'.
  Oct 20 00:23:18 juju-df624b-6-lxd-4 systemd[1]: Stopped HAProxy Load Balancer.
  root@juju-df624b-6-lxd-4:~#
  
  The Debian maintainer came up with the following patch for this:
  
    https://www.mail-archive.com/haproxy@formilux.org/msg30477.html
  
  Which was added to the 1.8.10-1 Debian upload and merged into upstream 1.8.13.
  Unfortunately Bionic is on 1.8.8-1ubuntu0.4 and doesn't have this patch.
  
  Please consider pulling this patch into an SRU for Bionic.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1848902

Title:
  haproxy in bionic can get stuck

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/haproxy/+bug/1848902/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to