diff options
author | Martin Schwenke <martin@meltin.net> | 2018-09-09 08:30:50 +1000 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2018-09-20 09:13:12 +0200 |
commit | 9b1cc7afee8181844da94faeabcedc2140d10b89 (patch) | |
tree | edcadc06b2db3f5aa5f4d208465c02ac53e066dd /ctdb | |
parent | 43c1ad1537debb538bfa7d304584ddb84344a379 (diff) | |
download | samba-9b1cc7afee8181844da94faeabcedc2140d10b89.tar.gz |
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 <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
(cherry picked from commit c516e58ce92c420dc993bd9b7f1433641bd764bd)
Diffstat (limited to 'ctdb')
-rw-r--r-- | ctdb/server/ctdb_recoverd.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/ctdb/server/ctdb_recoverd.c b/ctdb/server/ctdb_recoverd.c index 28b5e2b6c2d..d89addb5f85 100644 --- a/ctdb/server/ctdb_recoverd.c +++ b/ctdb/server/ctdb_recoverd.c @@ -1317,6 +1317,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) { /* |