From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2572 invoked by alias); 11 Mar 2008 19:16:50 -0000 Received: (qmail 2541 invoked by uid 9476); 11 Mar 2008 19:16:50 -0000 Date: Tue, 11 Mar 2008 19:16:00 -0000 Message-ID: <20080311191649.2526.qmail@sourceware.org> From: lhh@sourceware.org To: cluster-cvs@sources.redhat.com, cluster-devel@redhat.com Subject: Cluster Project branch, STABLE, updated. rgmanager_1_9_66-12-g5ee43ba X-Git-Refname: refs/heads/STABLE X-Git-Reftype: branch X-Git-Oldrev: 67f3b6dd2c711cb1077b88daea7bb6dd27fcf0ec X-Git-Newrev: 5ee43bab4b9c3048e58eb5f1de61d57b1a28e045 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-q1/txt/msg00301.txt.bz2 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=5ee43bab4b9c3048e58eb5f1de61d57b1a28e045 The branch, STABLE has been updated via 5ee43bab4b9c3048e58eb5f1de61d57b1a28e045 (commit) via 5459b747db65955eb0ddced1524e909e0d19f52f (commit) from 67f3b6dd2c711cb1077b88daea7bb6dd27fcf0ec (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 5ee43bab4b9c3048e58eb5f1de61d57b1a28e045 Author: Lon Hohberger Date: Fri Jan 25 18:13:24 2008 +0000 Fix qdiskd master abdication logic (#430264) commit 5459b747db65955eb0ddced1524e909e0d19f52f Author: Lon Hohberger 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 | 37 +++++++++++++++++++------------------ 1 files changed, 19 insertions(+), 18 deletions(-) diff --git a/cman/qdisk/main.c b/cman/qdisk/main.c index 1956c46..cb20590 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), @@ -932,7 +932,8 @@ quorum_loop(qd_ctx *ctx, node_info_t *ni, int max) ctx->qc_master = master_exists(ctx, ni, max, &low_id, &count); /* Resolve master conflict, if one exists */ - if (count > 1 && ctx->qc_status == S_MASTER) { + if (count >= 1 && ctx->qc_status == S_MASTER && + ctx->qc_master != ctx->qc_my_id) { clulog(LOG_WARNING, "Master conflict: abdicating\n"); /* Handle just like a recent upgrade */ hooks/post-receive -- Cluster Project