]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
first check that recovery master is connected (we know this from our own
authorRonnie Sahlberg <sahlberg@ronnie>
Wed, 10 Oct 2007 21:10:17 +0000 (07:10 +1000)
committerRonnie Sahlberg <sahlberg@ronnie>
Wed, 10 Oct 2007 21:10:17 +0000 (07:10 +1000)
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

index eb87b128225253db002f189ad08960a53ee26e00..7b574cf3ab772100779de2e896779524556b284b 100644 (file)
@@ -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) {