From d3cac30b312dd7c6f5425be4a4bdb0d30d52ceed Mon Sep 17 00:00:00 2001 From: Alexei Sheplyakov Date: Thu, 29 Jan 2015 14:08:24 +0300 Subject: [PATCH] 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 --- debian/changelog | 7 +++++++ debian/mcollective.init | 4 ++-- mcollective.init | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) mode change 100644 => 100755 mcollective.init diff --git a/debian/changelog b/debian/changelog index efbd460..33ff38e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +mcollective (2.3.1~mos6.1+2) trusty; urgency=low + + * Fix the sysv-style startup script so mcollective can be properly + restarted. + + -- Alexei Sheplyakov Thu, 29 Jan 2015 13:31:58 +0300 + mcollective (2.3.1~mos6.1+1) trusty; urgency=low * Pick the sources from packages/precise/mcollective. diff --git a/debian/mcollective.init b/debian/mcollective.init index 6b02d0b..ee8d68f 100755 --- a/debian/mcollective.init +++ b/debian/mcollective.init @@ -46,8 +46,8 @@ case "$1" in start) echo "Starting daemon: " $name # start the program - if [ -f $pidfile ]; then - if [ -f $(cat /proc/$(cat $pidfile)/exe > /dev/null) ] ; then + if [ -f "$pidfile" ]; then + if [ -L "/proc/$(cat $pidfile)/exe" ] ; then echo MCollective appears to be running exit 1 else diff --git a/mcollective.init b/mcollective.init old mode 100644 new mode 100755 index 6b02d0b..ee8d68f --- a/mcollective.init +++ b/mcollective.init @@ -46,8 +46,8 @@ case "$1" in start) echo "Starting daemon: " $name # start the program - if [ -f $pidfile ]; then - if [ -f $(cat /proc/$(cat $pidfile)/exe > /dev/null) ] ; then + if [ -f "$pidfile" ]; then + if [ -L "/proc/$(cat $pidfile)/exe" ] ; then echo MCollective appears to be running exit 1 else -- 2.32.3