From 1a4999076b7bb33406be505db192562774bbe29a Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Thu, 11 Oct 2007 07:10:17 +1000 Subject: [PATCH] first check that recovery master is connected (we know this from our own flags) then pull the flags off recovery master before checking if it is banned (This used to be ctdb commit 94c1d234e57a40eda2d8b892dd9fbe1ffc4b3433) --- ctdb/server/ctdb_recoverd.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ctdb/server/ctdb_recoverd.c b/ctdb/server/ctdb_recoverd.c index eb87b128225..7b574cf3ab7 100644 --- a/ctdb/server/ctdb_recoverd.c +++ b/ctdb/server/ctdb_recoverd.c @@ -1568,7 +1568,14 @@ again: goto again; } - /* grap the nodemap from the recovery master */ + /* if recovery master is disconnected we must elect a new recmaster */ + if (nodemap->nodes[j].flags & NODE_FLAGS_DISCONNECTED) { + DEBUG(0, ("Recmaster node %u is disconnected. Force reelection\n", nodemap->nodes[j].pnn)); + force_election(rec, mem_ctx, pnn, nodemap); + goto again; + } + + /* grap the nodemap from the recovery master to check if it is banned*/ ret = ctdb_ctrl_getnodemap(ctdb, CONTROL_TIMEOUT(), nodemap->nodes[j].pnn, mem_ctx, &remote_nodemap); if (ret != 0) { -- 2.47.3