summaryrefslogtreecommitdiff
path: root/src/mongo/idl/cluster_server_parameter_initializer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/idl/cluster_server_parameter_initializer.cpp')
-rw-r--r--src/mongo/idl/cluster_server_parameter_initializer.cpp95
1 files changed, 2 insertions, 93 deletions
diff --git a/src/mongo/idl/cluster_server_parameter_initializer.cpp b/src/mongo/idl/cluster_server_parameter_initializer.cpp
index 3205f7a4fa7..e28e0542ecb 100644
--- a/src/mongo/idl/cluster_server_parameter_initializer.cpp
+++ b/src/mongo/idl/cluster_server_parameter_initializer.cpp
@@ -34,6 +34,7 @@
#include "mongo/base/string_data.h"
#include "mongo/db/repl/replica_set_aware_service.h"
#include "mongo/db/service_context.h"
+#include "mongo/idl/cluster_parameter_synchronization_helpers.h"
#include "mongo/logv2/log.h"
namespace mongo {
@@ -58,102 +59,10 @@ ClusterServerParameterInitializer* ClusterServerParameterInitializer::get(
return &getInstance(serviceContext);
}
-void ClusterServerParameterInitializer::updateParameter(BSONObj doc, StringData mode) {
- auto nameElem = doc[kIdField];
- if (nameElem.type() != String) {
- LOGV2_DEBUG(6226301,
- 1,
- "Update with invalid cluster server parameter name",
- "mode"_attr = mode,
- "_id"_attr = nameElem);
- return;
- }
-
- auto name = nameElem.valueStringData();
- auto* sp = ServerParameterSet::getClusterParameterSet()->getIfExists(name);
- if (!sp) {
- LOGV2_DEBUG(6226300,
- 3,
- "Update to unknown cluster server parameter",
- "mode"_attr = mode,
- "name"_attr = name);
- return;
- }
-
- auto cptElem = doc[kCPTField];
- if ((cptElem.type() != mongo::Date) && (cptElem.type() != bsonTimestamp)) {
- LOGV2_DEBUG(6226302,
- 1,
- "Update to cluster server parameter has invalid clusterParameterTime",
- "mode"_attr = mode,
- "name"_attr = name,
- "clusterParameterTime"_attr = cptElem);
- return;
- }
-
- uassertStatusOK(sp->set(doc));
-}
-
-void ClusterServerParameterInitializer::clearParameter(ServerParameter* sp) {
- if (sp->getClusterParameterTime() == LogicalTime::kUninitialized) {
- // Nothing to clear.
- return;
- }
-
- uassertStatusOK(sp->reset());
-}
-
-void ClusterServerParameterInitializer::clearParameter(StringData id) {
- auto* sp = ServerParameterSet::getClusterParameterSet()->getIfExists(id);
- if (!sp) {
- LOGV2_DEBUG(6226303,
- 5,
- "oplog event deletion of unknown cluster server parameter",
- "name"_attr = id);
- return;
- }
-
- clearParameter(sp);
-}
-
-void ClusterServerParameterInitializer::clearAllParameters() {
- const auto& params = ServerParameterSet::getClusterParameterSet()->getMap();
- for (const auto& it : params) {
- clearParameter(it.second);
- }
-}
-
-void ClusterServerParameterInitializer::initializeAllParametersFromDisk(OperationContext* opCtx) {
- doLoadAllParametersFromDisk(opCtx, "initializing"_sd, [this](BSONObj doc, StringData mode) {
- updateParameter(doc, mode);
- });
-}
-
-void ClusterServerParameterInitializer::resynchronizeAllParametersFromDisk(
- OperationContext* opCtx) {
- const auto& allParams = ServerParameterSet::getClusterParameterSet()->getMap();
- std::set<std::string> unsetSettings;
- for (const auto& it : allParams) {
- unsetSettings.insert(it.second->name());
- }
-
- doLoadAllParametersFromDisk(
- opCtx, "resynchronizing"_sd, [this, &unsetSettings](BSONObj doc, StringData mode) {
- unsetSettings.erase(doc[kIdField].str());
- updateParameter(doc, mode);
- });
-
- // For all known settings which were not present in this resync,
- // explicitly clear any value which may be present in-memory.
- for (const auto& setting : unsetSettings) {
- clearParameter(setting);
- }
-}
-
void ClusterServerParameterInitializer::onInitialDataAvailable(OperationContext* opCtx,
bool isMajorityDataAvailable) {
LOGV2_INFO(6608200, "Initializing cluster server parameters from disk");
- initializeAllParametersFromDisk(opCtx);
+ cluster_parameters::initializeAllParametersFromDisk(opCtx);
}
} // namespace mongo