summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/repl_set_config.cpp
diff options
context:
space:
mode:
authorGabriel Marks <gabriel.marks@mongodb.com>2022-01-18 15:12:06 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-01-18 16:26:20 +0000
commit4c96930ccb001d91fd188380f80756c19f1ad3c1 (patch)
tree9961263123e2878b6ebd0287ec94ccfff326ef7a /src/mongo/db/repl/repl_set_config.cpp
parentf857a8efec9cde7a8c6ee903043e2cd4b5396d48 (diff)
downloadmongo-4c96930ccb001d91fd188380f80756c19f1ad3c1.tar.gz
SERVER-60817 Check write concern string for validity
Diffstat (limited to 'src/mongo/db/repl/repl_set_config.cpp')
-rw-r--r--src/mongo/db/repl/repl_set_config.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mongo/db/repl/repl_set_config.cpp b/src/mongo/db/repl/repl_set_config.cpp
index a626634af15..ecae0048ee3 100644
--- a/src/mongo/db/repl/repl_set_config.cpp
+++ b/src/mongo/db/repl/repl_set_config.cpp
@@ -427,7 +427,7 @@ Status ReplSetConfig::_validate(bool allowSplitHorizonIP) const {
Status ReplSetConfig::checkIfWriteConcernCanBeSatisfied(
const WriteConcernOptions& writeConcern) const {
- if (!writeConcern.wMode.empty() && writeConcern.wMode != WriteConcernOptions::kMajority) {
+ if (writeConcern.writeModeIsCustom()) {
StatusWith<ReplSetTagPattern> tagPatternStatus = findCustomWriteMode(writeConcern.wMode);
if (!tagPatternStatus.isOK()) {
return tagPatternStatus.getStatus();
@@ -738,6 +738,13 @@ bool ReplSetConfig::containsCustomizedGetLastErrorDefaults() const {
getLastErrorDefaults.syncMode == WriteConcernOptions::SyncMode::UNSET);
}
+Status ReplSetConfig::validateWriteConcern(const WriteConcernOptions& writeConcern) const {
+ if (writeConcern.writeModeIsCustom()) {
+ return findCustomWriteMode(writeConcern.wMode).getStatus();
+ }
+ return Status::OK();
+}
+
bool ReplSetConfig::isSplitConfig() const {
return !!_recipientConfig;
}