cluster: STABLE32 - cman init: fix start sequence error handling

Fabio M. Di Nitto fabbione at fedoraproject.org
Fri Mar 30 08:00:14 UTC 2012


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=65a0eef71377d2de4ad94e8f20065c4467a441e9
Commit:        65a0eef71377d2de4ad94e8f20065c4467a441e9
Parent:        b1695c02cb48f34f1d937585429ef4fdbbb570c7
Author:        Fabio M. Di Nitto <fdinitto at redhat.com>
AuthorDate:    Fri Mar 30 09:58:36 2012 +0200
Committer:     Fabio M. Di Nitto <fdinitto at redhat.com>
CommitterDate: Fri Mar 30 09:58:36 2012 +0200

cman init: fix start sequence error handling

Any daemon that fails to start would leave no traces.

the problem with cman init is that we need to handle multiple daemons
and tools. If one in the chain fails, we never reverted to the original
state of the system. This can indeed cause other issues.

Fix the init script to "stop" cman if any error happens during "start.

Resolves: rhbz#806002

Signed-off-by: Fabio M. Di Nitto <fdinitto at redhat.com>
---
 cman/init.d/cman.in |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/cman/init.d/cman.in b/cman/init.d/cman.in
index d0c6f70..a39f19f 100644
--- a/cman/init.d/cman.in
+++ b/cman/init.d/cman.in
@@ -19,6 +19,9 @@
 # set secure PATH
 PATH="/bin:/usr/bin:/sbin:/usr/sbin:@SBINDIR@"
 
+# save invokation for rollback ops
+thisinvokation="$0"
+
 chkconfig2()
 {
 	case "$1" in
@@ -199,6 +202,9 @@ nok() {
 	echo -e "$errmsg"
 	failure
 	echo
+	if [ "$currentaction" = "start" ]; then
+		$thisinvokation stop
+	fi
 	exit 1
 }
 
@@ -744,6 +750,7 @@ leave_fence_domain()
 
 start()
 {
+	currentaction="start"
 	breakpoint="$1"
 
 	sshd_enabled && cd @INITDDIR@ && ./sshd start


More information about the cluster-commits mailing list