diff options
author | Andrew Shuvalov <andrew.shuvalov@mongodb.com> | 2021-05-21 18:56:42 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-05-24 13:31:57 +0000 |
commit | 5c6ba3aeb114334ab037dedfa39ee6e0aa540d4c (patch) | |
tree | 8adcf70fa1c13ba48731a1cb1084c1b724727921 | |
parent | 7e2afe22b658e2724f0a35714c74d171868934b6 (diff) | |
download | mongo-5c6ba3aeb114334ab037dedfa39ee6e0aa540d4c.tar.gz |
SERVER-56374: BACKPORT-8902 create config.image_collection on StepUp
-rw-r--r-- | src/mongo/db/session_catalog_mongod.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/mongo/db/session_catalog_mongod.cpp b/src/mongo/db/session_catalog_mongod.cpp index 1c49cd901d5..f1d3096bfb0 100644 --- a/src/mongo/db/session_catalog_mongod.cpp +++ b/src/mongo/db/session_catalog_mongod.cpp @@ -40,6 +40,7 @@ #include "mongo/db/namespace_string.h" #include "mongo/db/operation_context.h" #include "mongo/db/ops/write_ops.h" +#include "mongo/db/repl/repl_server_parameters_gen.h" #include "mongo/db/repl/storage_interface_impl.h" #include "mongo/db/service_context.h" #include "mongo/db/session_txn_record_gen.h" @@ -212,6 +213,21 @@ void abortInProgressTransactions(OperationContext* opCtx) { opCtx->resetMultiDocumentTransactionState(); } } + +void createRetryableFindAndModifyTable(OperationContext* opCtx) { + auto serviceCtx = opCtx->getServiceContext(); + CollectionOptions options; + auto status = repl::StorageInterface::get(serviceCtx) + ->createCollection(opCtx, NamespaceString::kConfigImagesNamespace, options); + if (status == ErrorCodes::NamespaceExists) { + return; + } + + uassertStatusOKWithContext(status, + str::stream() << "Failed to create the " + << NamespaceString::kConfigImagesNamespace.ns() + << " collection"); +} } // namespace void MongoDSessionCatalog::onStepUp(OperationContext* opCtx) { @@ -259,6 +275,9 @@ void MongoDSessionCatalog::onStepUp(OperationContext* opCtx) { abortInProgressTransactions(opCtx); createTransactionTable(opCtx); + if (repl::gStoreFindAndModifyImagesInSideCollection.load()) { + createRetryableFindAndModifyTable(opCtx); + } } boost::optional<UUID> MongoDSessionCatalog::getTransactionTableUUID(OperationContext* opCtx) { |