summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXuerui Fa <xuerui.fa@mongodb.com>2019-09-06 00:55:27 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-02-04 14:53:44 +0000
commit21899f6bd537399e00dd86833d185b1ebd1fffe9 (patch)
treece5a2f951dc2fc6470a7bda2c6d071f577bc643e
parenta93cfd354467981c9cf944a4ada748d0226fdfb0 (diff)
downloadmongo-21899f6bd537399e00dd86833d185b1ebd1fffe9.tar.gz
SERVER-42573 Only warn about enableReadConcernMajority if PSA architecture
(cherry picked from commit 897ebf0eb55ffc68ef4c09aefc43a48bca82df3d)
-rw-r--r--src/mongo/db/repl/repl_set_config.cpp6
-rw-r--r--src/mongo/db/repl/repl_set_config.h5
-rw-r--r--src/mongo/db/repl/replication_coordinator_impl.cpp6
3 files changed, 15 insertions, 2 deletions
diff --git a/src/mongo/db/repl/repl_set_config.cpp b/src/mongo/db/repl/repl_set_config.cpp
index 34fe0a2feff..00a8177cbf1 100644
--- a/src/mongo/db/repl/repl_set_config.cpp
+++ b/src/mongo/db/repl/repl_set_config.cpp
@@ -730,6 +730,12 @@ Status ReplSetConfig::checkIfWriteConcernCanBeSatisfied(
}
}
+int ReplSetConfig::getNumDataBearingMembers() const {
+ int numArbiters =
+ std::count_if(begin(_members), end(_members), [](const auto& x) { return x.isArbiter(); });
+ return _members.size() - numArbiters;
+}
+
const MemberConfig& ReplSetConfig::getMemberAt(size_t i) const {
invariant(i < _members.size());
return _members[i];
diff --git a/src/mongo/db/repl/repl_set_config.h b/src/mongo/db/repl/repl_set_config.h
index 1e451a968ca..54ea0d52454 100644
--- a/src/mongo/db/repl/repl_set_config.h
+++ b/src/mongo/db/repl/repl_set_config.h
@@ -161,6 +161,11 @@ public:
}
/**
+ * Gets the number of data-bearing members in this configuration.
+ */
+ int getNumDataBearingMembers() const;
+
+ /**
* Access a MemberConfig element by index.
*/
const MemberConfig& getMemberAt(size_t i) const;
diff --git a/src/mongo/db/repl/replication_coordinator_impl.cpp b/src/mongo/db/repl/replication_coordinator_impl.cpp
index f7d410fdfbe..c6fb608d76b 100644
--- a/src/mongo/db/repl/replication_coordinator_impl.cpp
+++ b/src/mongo/db/repl/replication_coordinator_impl.cpp
@@ -562,9 +562,11 @@ void ReplicationCoordinatorImpl::_finishLoadLocalConfig(
myIndex = StatusWith<int>(-1);
}
- if (serverGlobalParams.enableMajorityReadConcern && localConfig.containsArbiter()) {
+ if (serverGlobalParams.enableMajorityReadConcern && localConfig.getNumMembers() == 3 &&
+ localConfig.getNumDataBearingMembers() == 2) {
log() << startupWarningsLog;
- log() << "** WARNING: This replica set uses arbiters, but readConcern:majority is enabled "
+ log() << "** WARNING: This replica set has a Primary-Secondary-Arbiter architecture, but "
+ "readConcern:majority is enabled "
<< startupWarningsLog;
log() << "** for this node. This is not a recommended configuration. Please see "
<< startupWarningsLog;