From Wolfgang M.
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Wed, 21 Oct 2009 20:58:44 +0000 (07:58 +1100)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Wed, 21 Oct 2009 20:58:44 +0000 (07:58 +1100)
With the new vacuuming code, dont treat an invalid dmaster as fatal. Let it update to the new value insetad.

server/ctdb_call.c

index cd5286781153c29af140a8623be0acc4e6b3aa9e..1dac919925864e38336befcbcb4ec7b741b162b7 100644 (file)
@@ -342,10 +342,13 @@ void ctdb_request_dmaster(struct ctdb_context *ctdb, struct ctdb_req_header *hdr
                         ctdb_db->db_id, hdr->generation, ctdb->vnn_map->generation,
                         (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");
-                       return;
-               }
+               /*
+                * with the new vacuuming code there are conditions where a node has outdated
+                * information about the real dmaster
+                * since here we are lmaster and always know who is the real dmaster
+                * we don't need to exit with a fatal error and we even don't have
+                * to initiate a recovery
+                */
        }
 
        if (header.rsn > c->rsn) {