summaryrefslogtreecommitdiff
path: root/ctdb
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2018-09-09 08:30:50 +1000
committerKarolin Seeger <kseeger@samba.org>2018-09-20 09:13:12 +0200
commit9b1cc7afee8181844da94faeabcedc2140d10b89 (patch)
treeedcadc06b2db3f5aa5f4d208465c02ac53e066dd /ctdb
parent43c1ad1537debb538bfa7d304584ddb84344a379 (diff)
downloadsamba-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.c9
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) {
/*