summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Schwerin <schwerin@mongodb.com>2014-11-24 17:57:45 -0500
committerAndy Schwerin <schwerin@mongodb.com>2015-01-14 15:06:28 -0500
commit21a49b672559fc6d818b920d52ec5b2035f559f3 (patch)
tree93897c578130c75d97953741488eb9cdd17b39cb
parenta7d57ad27c382de82e9cb93bf983a80fd9ac9899 (diff)
downloadmongo-21a49b672559fc6d818b920d52ec5b2035f559f3.tar.gz
SERVER-16315 Nodes should not threaten to veto nodes whose config version is higher than their own.
-rw-r--r--src/mongo/db/repl/consensus.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mongo/db/repl/consensus.cpp b/src/mongo/db/repl/consensus.cpp
index fc89d906a9d..c20a4216f3f 100644
--- a/src/mongo/db/repl/consensus.cpp
+++ b/src/mongo/db/repl/consensus.cpp
@@ -57,6 +57,12 @@ namespace mongo {
return false;
}
+ int cfgver = cmdObj["cfgver"].Int();
+ if (theReplSet->config().version < cfgver) {
+ // Our config is stale; do not veto.
+ return false;
+ }
+
unsigned id = cmdObj["id"].Int();
const Member* primary = theReplSet->box.getPrimary();
const Member* hopeful = theReplSet->findById(id);