Hello,

I noticed script zkServer.sh stops zookeeper by sending the java
process a `kill -9` (SIGKILL). Is there any technical reason to use
such a radical signal rather than SIGTERM (-15) for instance?

I am wondering this because I am working on Systemd service files for
Zookeeper [0] [1] and this `-9` actually makes Systemd consider the
Zookeeper java process fails when stop is called as shown by the
following Systemd log:

---------------8<---------------
# sudo systemctl status zookeeper.service
● zookeeper.service - Highly reliable distributed coordination server
   Loaded: loaded (/usr/lib/systemd/system/zookeeper.service; disabled)
   Active: failed (Result: signal) since Wed 2014-11-05 11:23:29 CET; 2s ago
  Process: 656 ExecStop=/usr/bin/zkServer.sh stop (code=exited,
status=0/SUCCESS)
  Process: 406 ExecStart=/usr/bin/zkServer.sh start (code=exited,
status=0/SUCCESS)
 Main PID: 414 (code=killed, signal=KILL)

Nov 05 11:23:29 magenta zookeeper[656]: Stopping zookeeper ... STOPPED
Nov 05 11:23:29 magenta systemd[1]: zookeeper.service: main process
exited, code=killed, status=9/KILL
Nov 05 11:23:29 magenta systemd[1]: Unit zookeeper.service entered failed state.
---------------8<---------------

There is no way to make this `status=9/KILL` to be recognized by
Systemd as a regular exit code, even with `SuccessExitStatus=9 KILL
SIGKILL`. On the other hand, turning this `kill -9` into a regular
`kill` (-15 implied) makes it:

---------------8<---------------
# sudo systemctl status zookeeper.service
● zookeeper.service - Highly reliable distributed coordination server
   Loaded: loaded (/usr/lib/systemd/system/zookeeper.service; disabled)
   Active: inactive (dead)

Nov 05 11:14:27 magenta zookeeper[30032]: Using config:
/usr/share/zookeeper/bin/../conf/zoo.cfg
Nov 05 11:14:27 magenta zookeeper[30032]: Stopping zookeeper ... STOPPED
---------------8<---------------

I would gladly submit a tiny patch for this (and maybe also submit the
service file) but would first like to have your opinion on the reasons
to use SIGKILL.

[0] 
https://github.com/galaux/aurpkgs/blob/master/zookeeper/systemd_zookeeper.service
[1] 
https://github.com/galaux/aurpkgs/blob/master/zookeeper/systemd_zookeeper%40.service

--
Guillaume

Reply via email to