summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronniesahlberg@gmail.com>2011-02-18 11:21:19 +1100
committerRonnie Sahlberg <ronniesahlberg@gmail.com>2011-02-18 11:29:44 +1100
commit92f86534ac148bae49fdb51580f949ba7a08b421 (patch)
tree4316deef273eedfafd488f6690eabda84cc98a65
parenta453e790502b9871c5f7ea6e54da6fba973e9b9d (diff)
downloadsamba-92f86534ac148bae49fdb51580f949ba7a08b421.tar.gz
samba-92f86534ac148bae49fdb51580f949ba7a08b421.tar.xz
samba-92f86534ac148bae49fdb51580f949ba7a08b421.zip
ctdb_req_dmaster from non-master
If we find a situatior where we get a stray packet with the wrong dmaster, dont suicide with ctdb_fatal() since this is too disruptive. Just drop the stray packet and force a recovery to make sure all is good again. CQ S1022004 (This used to be ctdb commit 62b7fe853db37c0a90e48a0332a3426a8dcb4ed8)
-rw-r--r--ctdb/server/ctdb_call.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/ctdb/server/ctdb_call.c b/ctdb/server/ctdb_call.c
index d6c08666a6..be6e8f93d2 100644
--- a/ctdb/server/ctdb_call.c
+++ b/ctdb/server/ctdb_call.c
@@ -369,7 +369,9 @@ void ctdb_request_dmaster(struct ctdb_context *ctdb, struct ctdb_req_header *hdr
(unsigned long long)c->rsn, (unsigned long long)header.rsn, c->hdr.reqid,
(key.dsize >= 4)?(*(uint32_t *)key.dptr):0));
if (header.rsn != 0 || header.dmaster != ctdb->pnn) {
- ctdb_fatal(ctdb, "ctdb_req_dmaster from non-master");
+ DEBUG(DEBUG_ERR,("ctdb_req_dmaster from non-master. Force a recovery.\n"));
+
+ ctdb->recovery_mode = CTDB_RECOVERY_ACTIVE;
return;
}
}