From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26609 invoked by alias); 28 Aug 2008 14:16:17 -0000 Received: (qmail 26603 invoked by alias); 28 Aug 2008 14:16:17 -0000 X-Spam-Status: No, hits=-1.1 required=5.0 tests=AWL,BAYES_05,KAM_MX,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on bastion.fedora.phx.redhat.com X-Spam-Level: Subject: master - cman: Allow a recently left node to join cleanly. To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: e80d71336fac784e0412a49c0d15fda90111b876 X-Git-Newrev: 9c5b75565b831bb9a382e3c320a3461aa8130b15 From: Christine Caulfield Message-Id: <20080828141511.1A9D5120379@lists.fedorahosted.org> Date: Thu, 28 Aug 2008 14:18:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2008-q3/txt/msg00350.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=9c5b75565b831bb9a382e3c320a3461aa8130b15 Commit: 9c5b75565b831bb9a382e3c320a3461aa8130b15 Parent: e80d71336fac784e0412a49c0d15fda90111b876 Author: Christine Caulfield AuthorDate: Thu Aug 28 15:12:15 2008 +0100 Committer: Christine Caulfield CommitterDate: Thu Aug 28 15:12:15 2008 +0100 cman: Allow a recently left node to join cleanly. If a node leaves cleanly and then joins within the corosync totem timeout then odd things can happen and the nodeslist can get inconsistent. With the rest of the cluster stack on top this is probably quite hard to do I suspect. Signed-off-by: Christine Caulfield --- cman/daemon/commands.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/cman/daemon/commands.c b/cman/daemon/commands.c index 1172f5d..3497369 100644 --- a/cman/daemon/commands.c +++ b/cman/daemon/commands.c @@ -2069,7 +2069,7 @@ void add_ais_node(int nodeid, uint64_t incarnation, int total_members) node = add_new_node(tempname, nodeid, 1, total_members, NODESTATE_DEAD); } - if (node->state == NODESTATE_DEAD) { + if (node->state == NODESTATE_DEAD || node->state == NODESTATE_LEAVING) { gettimeofday(&node->join_time, NULL); node->incarnation = incarnation; node->state = NODESTATE_MEMBER;