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

pcaulfield at sourceware.org pcaulfield at sourceware.org
Wed Jan 17 11:00:41 UTC 2007


CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	pcaulfield at sourceware.org	2007-01-17 11:00:41

Modified files:
	cman/daemon    : commands.c 

Log message:
	If we get killed by another node then print the reason in English rather
	than just a number.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/daemon/commands.c.diff?cvsroot=cluster&r1=1.59&r2=1.60

--- cluster/cman/daemon/commands.c	2007/01/16 09:54:43	1.59
+++ cluster/cman/daemon/commands.c	2007/01/17 11:00:40	1.60
@@ -2,7 +2,7 @@
 *******************************************************************************
 **
 **  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
-**  Copyright (C) 2004-2006 Red Hat, Inc.  All rights reserved.
+**  Copyright (C) 2004-2007 Red Hat, Inc.  All rights reserved.
 **
 **  This copyrighted material is made available to anyone wishing to use,
 **  modify, copy, or redistribute it subject to the terms and conditions
@@ -97,6 +97,7 @@
 static void process_internal_message(char *data, int len, int nodeid, int byteswap);
 static void recalculate_quorum(int allow_decrease);
 static void send_kill(int nodeid, uint16_t reason);
+static char *killmsg_reason(int reason);
 
 static void set_port_bit(struct cluster_node *node, uint8_t port)
 {
@@ -1817,7 +1818,8 @@
 		killmsg = (struct cl_killmsg *)data;
 		P_MEMB("got KILL for node %d\n", killmsg->nodeid);
 		if (killmsg->nodeid == wanted_nodeid) {
-			log_msg(LOG_INFO, "cman killed by node %d for reason %d\n", nodeid, killmsg->reason);
+			log_msg(LOG_INFO, "cman killed by node %d because %s\n", nodeid,
+				killmsg_reason(killmsg->reason));
 			exit(1);
 		}
 		break;
@@ -2040,3 +2042,23 @@
 	return NULL;
 }
 
+static char *killmsg_reason(int reason)
+{
+	static char msg[1024];
+
+	switch (reason)
+	{
+	case CLUSTER_KILL_REJECTED:
+		return "our membership application was rejected";
+
+	case CLUSTER_KILL_CMANTOOL:
+		return "we were killed by cman_tool or other application";
+
+	case CLUSTER_KILL_REJOIN:
+		return "we node rejoined cluster without a full restart";
+
+	default:
+		sprintf(msg, "we got kill message number %d", reason);
+		return msg;
+	}
+}




More information about the Cluster-devel mailing list