diff options
-rw-r--r-- | ctdb/server/ctdb_recoverd.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/ctdb/server/ctdb_recoverd.c b/ctdb/server/ctdb_recoverd.c index 901f24e6214..b6b2f6b8735 100644 --- a/ctdb/server/ctdb_recoverd.c +++ b/ctdb/server/ctdb_recoverd.c @@ -3553,6 +3553,12 @@ static void main_loop(struct ctdb_context *ctdb, struct ctdb_recoverd *rec, if ((recmaster_nodemap->nodes[j].flags & NODE_FLAGS_INACTIVE) && (rec->node_flags & NODE_FLAGS_INACTIVE) == 0) { DEBUG(DEBUG_NOTICE, ("Recmaster node %u no longer available. Force reelection\n", nodemap->nodes[j].pnn)); + /* + * update our nodemap to carry the recmaster's notion of + * its own flags, so that we don't keep freezing the + * inactive recmaster node... + */ + nodemap->nodes[j].flags = recmaster_nodemap->nodes[j].flags; force_election(rec, pnn, nodemap); return; } |