[Cluster-devel] cluster/cman/daemon commands.c

pcaulfield at sourceware.org pcaulfield at sourceware.org
Tue Jan 16 16:31:10 UTC 2007


CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL50
Changes by:	pcaulfield at sourceware.org	2007-01-16 16:31:08

Modified files:
	cman/daemon    : commands.c 

Log message:
	Don't return to 'cman_tool leave' until we are just about to quit.
	Otherwise there can be a delay between cman_tool thinking that we
	are down, and the node really being out of the cluster.
	see bz#222686

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/daemon/commands.c.diff?cvsroot=cluster&only_with_tag=RHEL50&r1=1.55.4.1&r2=1.55.4.2

--- cluster/cman/daemon/commands.c	2006/12/13 14:20:50	1.55.4.1
+++ cluster/cman/daemon/commands.c	2007/01/16 16:31:07	1.55.4.2
@@ -869,13 +869,13 @@
 		}
 		else {
 			reply = -EBUSY;
+
+			/* Tell originator that shutdown was cancelled */
+			send_status_return(shutdown_con, CMAN_CMD_TRY_SHUTDOWN, reply);
+			shutdown_con = NULL;
 		}
 
 		P_MEMB("shutdown decision is: %d (yes=%d, no=%d) flags=%x\n", reply, shutdown_yes, shutdown_no, shutdown_flags);
-
-		/* Tell originator what we decided */
-		send_status_return(shutdown_con, CMAN_CMD_TRY_SHUTDOWN, reply);
-		shutdown_con = NULL;
 	}
 }
 
@@ -1827,8 +1827,12 @@
 		P_MEMB("got LEAVE from node %d, reason = %d\n", nodeid, leavemsg->reason);
 
 		/* We got our own leave message back. now quit */
-		if (node && node->node_id == us->node_id)
+		if (node && node->node_id == us->node_id) {
+			/* Tell whomever asked us to leave that we are now going down */
+			if (shutdown_con)
+				send_status_return(shutdown_con, CMAN_CMD_TRY_SHUTDOWN, 0);
 			exit(0);
+		}
 
 		/* Someone else, make a note of the reason for leaving */
 		if (node)




More information about the Cluster-devel mailing list