diff options
author | Ronnie Sahlberg <ronniesahlberg@gmail.com> | 2011-02-18 11:21:19 +1100 |
---|---|---|
committer | Ronnie Sahlberg <ronniesahlberg@gmail.com> | 2011-02-18 11:29:44 +1100 |
commit | 92f86534ac148bae49fdb51580f949ba7a08b421 (patch) | |
tree | 4316deef273eedfafd488f6690eabda84cc98a65 | |
parent | a453e790502b9871c5f7ea6e54da6fba973e9b9d (diff) | |
download | samba-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.c | 4 |
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; } } |