From: Ronnie Sahlberg Date: Wed, 10 Oct 2007 21:10:17 +0000 (+1000) Subject: first check that recovery master is connected (we know this from our own X-Git-Tag: tevent-0.9.20~348^2~2381^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1a4999076b7bb33406be505db192562774bbe29a;p=thirdparty%2Fsamba.git 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) --- 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) {