Feature #2825
closedSystemd service should default to graceful stop
Description
Originally reported as just a bug in the sysv script of the debian and ubuntu packages of lighttpd (https://bugs.launchpad.net/ubuntu/+source/lighttpd/+bug/1707312), turns out there is no equivalent to a graceful stop/restart in the systemd service file for lighttpd.
This diff was suggested by Vasya Pupkin on that launchpad bug (I refreshed it for the current 1.4 git tree):
--- a/doc/systemd/lighttpd.service
+++ b/doc/systemd/lighttpd.service
@@ -9,6 +9,9 @@ ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf
ExecStart=/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
ExecReload=/bin/kill -USR1 $MAINPID
Restart=on-failure
+KillMode=mixed
+KillSignal=SIGINT
+TimeoutStopSec=60
As far as I know, there is no clean way to have a "graceful-restart" systemd action alongside the normal "restart" one, so the above changes behavior a bit in the sense that all actions that involve a "stop" will send the SIGINT signal instead of SIGTERM, unless the timeout is reached, in which case SIGTERM it is.
The argument for KillMode=mixed was made in this comment: https://bugs.launchpad.net/ubuntu/+source/lighttpd/+bug/1707312/comments/26
Thanks!
Updated by stbuehler about 7 years ago
I already pointed you to 0ae6bab4a97f12a0c93200df36ac1741696eeed5 in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=877870#10
Updated by ahasenack about 7 years ago
The USR1 signal may indeed satisfy the requirements of a graceful-restart, so the remaining case is a graceful-shutdown, i.e., wait for existing connections to terminate and not accept new ones. You might decide it's not worth the trouble, given that this systemd service file change affects all stop-related actions, that's fine. I just wanted to bring it up.
Updated by gstrauss about 7 years ago
- Category set to core
- Status changed from New to Fixed
- Target version changed from 1.4.x to 1.4.46
See the section "signals" in InstallFromSource. Graceful shutdown is already handled with SIGINT, and this is available in existing versions of lighttpd.
Also available in: Atom