[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [Linux-cluster] problem with fencing

On Fri, 2005-08-05 at 10:21 -0500, Adam Manthei wrote:
> What's odd about that is that there should still
> be something in the logs listing the output of the first command. 

I just did a quick test, and confirmed that it won't produce an error
unless all of the fence devices for a node fail to fence the server.
Right now it treats inability to execute the fence script the same as if
the fence script failed to fence the node.   Also the failure condition
where the exec returns does not produce any output, so nothing gets
displayed (or sent to syslog).

The attached patch (diff against RHEL4) will produce an error message
when the exec fails with the error message. Also it display a message
when no output is produced by a fence agent, for a failed exec.

? fenced
? fenced_badagentfix.patch
Index: agent.c
RCS file: /cvs/cluster/cluster/fence/fenced/agent.c,v
retrieving revision
diff -u -r1.7.2.4 agent.c
--- agent.c	24 Feb 2005 07:06:09 -0000
+++ agent.c	5 Aug 2005 16:17:45 -0000
@@ -38,11 +38,13 @@
 static void display_agent_output(char *agent, int fd)
 	char msg[512], buf[256];
+	int got_output=0;
 	memset(msg, 0, sizeof(msg));
 	memset(buf, 0, sizeof(buf));
 	while (read(fd, buf, sizeof(buf)-1) > 0) {
+		got_output=1;
 		snprintf(msg, 256, "agent \"%s\" reports: ", agent);
 		strcat(msg, buf);
@@ -52,6 +54,12 @@
 		memset(buf, 0, sizeof(buf));
 		memset(msg, 0, sizeof(msg));
+	if(!got_output){
+		snprintf(msg,512,"agent \"%s\" did not produce any output, yet failed to fence the node.",agent);
+		printf("%s\n",msg);
+		syslog(LOG_ERR,msg);
+	}
 static int run_agent(char *agent, char *args)
@@ -109,6 +117,9 @@
 		execlp(agent, agent, NULL);
+		fprintf(stderr,"Failed to execute agent, error: %s.",strerror(errno));

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]