From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10704 invoked by alias); 22 Jul 2009 16:33:18 -0000 Received: (qmail 10696 invoked by alias); 22 Jul 2009 16:33:17 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bastion2.fedora.phx.redhat.com Subject: cluster: RHEL54 - cman: send fewer messages for each state transition. To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/RHEL54 X-Git-Reftype: branch X-Git-Oldrev: 4478238a116b9c0720e88ff83e7f6cd8fde3c6ad X-Git-Newrev: 32bcee3c03818e5fe65751ade92308a35809e08f From: Chris Feist Message-Id: <20090722160526.0AC681201FC@lists.fedorahosted.org> Date: Wed, 22 Jul 2009 16:33: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: 2009-q3/txt/msg00072.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=32bcee3c03818e5fe65751ade92308a35809e08f Commit: 32bcee3c03818e5fe65751ade92308a35809e08f Parent: 4478238a116b9c0720e88ff83e7f6cd8fde3c6ad Author: Christine Caulfield AuthorDate: Tue Jan 20 14:14:26 2009 +0000 Committer: Chris Feist CommitterDate: Wed Jul 22 11:05:02 2009 -0500 cman: send fewer messages for each state transition. Only recalculate quorum (and tell everyone the result) if a node state has actually changed. bz#505258 Signed-off-by: Christine Caulfield --- cman/daemon/commands.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/cman/daemon/commands.c b/cman/daemon/commands.c index 03c7426..710449e 100644 --- a/cman/daemon/commands.c +++ b/cman/daemon/commands.c @@ -1712,6 +1712,8 @@ static void do_process_transition(int nodeid, char *data, int len) { struct cl_transmsg *msg = (struct cl_transmsg *)data; struct cluster_node *node; + unsigned int old_expected; + nodestate_t old_state; if (valid_transition_msg(nodeid, msg) != 0) { P_MEMB("Transition message from %d does not match current config - should quit ?\n", nodeid); @@ -1732,6 +1734,8 @@ static void do_process_transition(int nodeid, char *data, int len) add_ais_node(nodeid, incarnation, num_ais_nodes); node = find_node_by_nodeid(nodeid); assert(node); + old_expected = node->expected_votes; + old_state = node->state; P_MEMB("Got TRANSITION message. msg->flags=%x, node->flags=%x, first_trans=%d\n", msg->flags, node->flags, msg->first_trans); @@ -1791,7 +1795,9 @@ static void do_process_transition(int nodeid, char *data, int len) /* Take into account any new expected_votes value that the new node has */ node->expected_votes = msg->expected_votes; - recalculate_quorum(0, 0); + + if (old_state != node->state || old_expected != node->expected_votes) + recalculate_quorum(0, 0); if (node->fence_agent && msg->fence_agent[0] && strcmp(node->fence_agent, msg->fence_agent)) {