summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/database_cloner.cpp
diff options
context:
space:
mode:
authorLucas de Castro Borges <lucas@gnuabordo.com.br>2025-02-14 14:26:38 -0300
committerLucas de Castro Borges <lucas@gnuabordo.com.br>2025-02-14 14:26:38 -0300
commit294bc6ecabf14c09c9bc8644704921dcf97cb44e (patch)
tree279b1e0bab53901a1647ac63c1c724f0f789a663 /src/mongo/db/repl/database_cloner.cpp
parent70be7c27a251621187a1de533462ae2bb1e3bd39 (diff)
parent1e917fd798aa25b7066d4b414b51184f13d5a092 (diff)
Update upstream source from tag 'upstream/6.0.10'debian/6.0.10-1
Update to upstream version '6.0.10' with Debian dir 2d176fa254eee97b139f712fec5709641335a8c3
Diffstat (limited to 'src/mongo/db/repl/database_cloner.cpp')
-rw-r--r--src/mongo/db/repl/database_cloner.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/mongo/db/repl/database_cloner.cpp b/src/mongo/db/repl/database_cloner.cpp
index adeeeb0afb6..23da9db918a 100644
--- a/src/mongo/db/repl/database_cloner.cpp
+++ b/src/mongo/db/repl/database_cloner.cpp
@@ -29,6 +29,7 @@
#define MONGO_LOGV2_DEFAULT_COMPONENT ::mongo::logv2::LogComponent::kReplicationInitialSync
+#include "mongo/db/service_context.h"
#include "mongo/platform/basic.h"
#include "mongo/base/string_data.h"
@@ -69,6 +70,7 @@ BaseCloner::AfterStageBehavior DatabaseCloner::listCollectionsStage() {
BSONObj res;
auto collectionInfos =
getClient()->getCollectionInfos(_dbName, ListCollectionsFilter::makeTypeCollectionFilter());
+ const auto storageEngine = getGlobalServiceContext()->getStorageEngine();
stdx::unordered_set<std::string> seen;
for (auto&& info : collectionInfos) {
@@ -104,6 +106,13 @@ BaseCloner::AfterStageBehavior DatabaseCloner::listCollectionsStage() {
<< "'" << result.getName() << "': " << info,
isDuplicate);
+ // Sanitize storage engine options to remove options which might not apply to this node. See
+ // SERVER-68122.
+ auto sanitizedStorageOptions =
+ uassertStatusOK(storageEngine->getSanitizedStorageOptionsForSecondaryReplication(
+ result.getOptions().storageEngine));
+ result.getOptions().storageEngine = sanitizedStorageOptions;
+
// While UUID is a member of CollectionOptions, listCollections does not return the
// collectionUUID there as part of the options, but instead places it in the 'info' field.
// We need to move it back to CollectionOptions to create the collection properly.