Cluster Project branch, STABLE2, updated. cluster-2.02.00-13-g088cad7

lhh@sourceware.org lhh@sourceware.org
Tue Mar 11 20:28:00 GMT 2008


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Cluster Project".

http://sources.redhat.com/git/gitweb.cgi?p=cluster.git;a=commitdiff;h=088cad7ce9f46b501fcfd8475c71e0909a86d895

The branch, STABLE2 has been updated
       via  088cad7ce9f46b501fcfd8475c71e0909a86d895 (commit)
      from  e50f43228b1da237524eaea2bf0ae345c20c6104 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 088cad7ce9f46b501fcfd8475c71e0909a86d895
Author: Lon Hohberger <lhh@redhat.com>
Date:   Tue Mar 11 10:43:37 2008 -0400

    [CMAN] Fix "Node X is undead" loop bug
    
    This was caused by an improper assignment to ps_incarnation
    after a node decides to evict another node.  The fix
    is to simply make the internal (memory) assignments before
    calling qd_write_status()

-----------------------------------------------------------------------

Summary of changes:
 cman/qdisk/main.c |   34 +++++++++++++++++-----------------
 1 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/cman/qdisk/main.c b/cman/qdisk/main.c
index ca69624..8bd8c7d 100644
--- a/cman/qdisk/main.c
+++ b/cman/qdisk/main.c
@@ -252,23 +252,6 @@ check_transitions(qd_ctx *ctx, node_info_t *ni, int max, memb_mask_t mask)
 		     state_run(ni[x].ni_status.ps_state)) {
 
 			/*
-			   Write eviction notice if we're the master.
-			 */
-			if (ctx->qc_status == S_MASTER) {
-				clulog(LOG_NOTICE,
-				       "Writing eviction notice for node %d\n",
-				       ni[x].ni_status.ps_nodeid);
-				qd_write_status(ctx, ni[x].ni_status.ps_nodeid,
-						S_EVICT, NULL, NULL, NULL);
-				if (ctx->qc_flags & RF_ALLOW_KILL) {
-					clulog(LOG_DEBUG, "Telling CMAN to "
-						"kill the node\n");
-					cman_kill_node(ctx->qc_ch,
-						ni[x].ni_status.ps_nodeid);
-				}
-			}
-
-			/*
 			   Mark our internal views as dead if nodes miss too
 			   many heartbeats...  This will cause a master
 			   transition if no live master exists.
@@ -285,6 +268,23 @@ check_transitions(qd_ctx *ctx, node_info_t *ni, int max, memb_mask_t mask)
 			ni[x].ni_evil_incarnation = 
 				ni[x].ni_status.ps_incarnation;
 			
+			/*
+			   Write eviction notice if we're the master.
+			 */
+			if (ctx->qc_status == S_MASTER) {
+				clulog(LOG_NOTICE,
+				       "Writing eviction notice for node %d\n",
+				       ni[x].ni_status.ps_nodeid);
+				qd_write_status(ctx, ni[x].ni_status.ps_nodeid,
+						S_EVICT, NULL, NULL, NULL);
+				if (ctx->qc_flags & RF_ALLOW_KILL) {
+					clulog(LOG_DEBUG, "Telling CMAN to "
+						"kill the node\n");
+					cman_kill_node(ctx->qc_ch,
+						ni[x].ni_status.ps_nodeid);
+				}
+			}
+
 			/* Clear our master mask for the node after eviction */
 			if (mask)
 				clear_bit(mask, (ni[x].ni_status.ps_nodeid-1),


hooks/post-receive
--
Cluster Project



More information about the Cluster-cvs mailing list