Fix sys V init script so start/restart actions work properly
The config file shipped with the package tells mcollectived to daemonize.
However the init script assumes mcollectived runs in the foreground
(start-stop-daemon -b) and tells start-stop-daemon put mcollective into
background and to manage the pid file. So start-stop-daemon forks, records
its pid, and starts mcollective which forks again. Therefore PID recorded
in the PID file is wrong. As a result the restart action spawns a new
instance of mcollective without stopping the old one, and start launches
a new mcollective even if it's already running.
Rewrite the init script, drop the trickery which start-stop-daemon does
on its own (provided that PID file is correct). While at it add dependency
on ruby-stomp (mcollectived won't even start without it).
Closes-Bug: #
1454741
Change-Id: Iac4d3535c98881be7ccea256c50d58f337420205
Fix the init script so mcollective can be restarted properly
The check for a running mcollective process is totally wrong and fails
to handle a stale pid file:
if [ -f $(cat /proc/$(cat $pidfile)/exe > /dev/null) ] ; then
Basically it's
if [ -f ]; then echo "Someone can't write shell scripts"; fi
This error breaks image based deployment. During the first boot after
the image based provisioning cloud init reconfigures mcollective to use
rabbitmq for communication and restarts it. However the restart gets
suppressed due to a bug in the sysv-style init script, so OpenStack
deployment does not start (and eventually times out).
The error is non-deterministic since sometimes cloud-init manages to
configure mcollective before it actually gets started (thus the correct
configuration is used despite the skipped restart).
Related-Bug: #
1407634
Change-Id: I1608492ff807a1662fa1453c6e50d9fb4eb234bd