From: Martin Schwenke Date: Sat, 8 Sep 2018 22:30:50 +0000 (+1000) Subject: ctdb-recoverd: Re-check master on failure to take recovery lock X-Git-Tag: tdb-1.3.17~1538 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c516e58ce92c420dc993bd9b7f1433641bd764bd;p=thirdparty%2Fsamba.git ctdb-recoverd: Re-check master on failure to take recovery lock If the master changed while trying to take the lock then fail gracefully. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13617 Signed-off-by: Martin Schwenke Reviewed-by: Amitay Isaacs --- diff --git a/ctdb/server/ctdb_recoverd.c b/ctdb/server/ctdb_recoverd.c index d64ab8e858a..3578ccd3a8b 100644 --- a/ctdb/server/ctdb_recoverd.c +++ b/ctdb/server/ctdb_recoverd.c @@ -1327,6 +1327,15 @@ static int do_recovery(struct ctdb_recoverd *rec, ok = ctdb_recovery_lock(rec); if (! ok) { D_ERR("Unable to take recovery lock\n"); + + if (pnn != rec->recmaster) { + D_NOTICE("Recovery master changed to %u," + " aborting recovery\n", + rec->recmaster); + rec->need_recovery = false; + goto fail; + } + if (ctdb->runstate == CTDB_RUNSTATE_FIRST_RECOVERY) { /*