summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGregory Wlodarek <gregory.wlodarek@mongodb.com>2022-08-10 12:50:11 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-08-10 13:55:31 +0000
commit92c4d0cf38b1bd20be3c600c1fa4b103d81fdd1b (patch)
treecee193eb7edd26956e8f0e531e34f773532e042e /src
parent85ff13118e4f882b7c254fd1d3c2f4abd4c5296b (diff)
downloadmongo-92c4d0cf38b1bd20be3c600c1fa4b103d81fdd1b.tar.gz
SERVER-68671 Only maintain drop pending idents in the CollectionCatalog when the point-in-time catalog lookups feature flag is enabled
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/catalog/SConscript1
-rw-r--r--src/mongo/db/catalog/collection_catalog.cpp7
-rw-r--r--src/mongo/db/storage/SConscript1
-rw-r--r--src/mongo/db/storage/storage_util.cpp12
4 files changed, 16 insertions, 5 deletions
diff --git a/src/mongo/db/catalog/SConscript b/src/mongo/db/catalog/SConscript
index 296f598fee6..75f0e951551 100644
--- a/src/mongo/db/catalog/SConscript
+++ b/src/mongo/db/catalog/SConscript
@@ -298,6 +298,7 @@ env.Library(
'$BUILD_DIR/mongo/db/service_context',
'$BUILD_DIR/mongo/db/storage/bson_collection_catalog_entry',
'$BUILD_DIR/mongo/db/storage/snapshot_helper',
+ '$BUILD_DIR/mongo/db/storage/storage_options',
'$BUILD_DIR/mongo/db/views/views',
'$BUILD_DIR/mongo/idl/server_parameter',
'collection',
diff --git a/src/mongo/db/catalog/collection_catalog.cpp b/src/mongo/db/catalog/collection_catalog.cpp
index d83629b782a..9bb5d66d80b 100644
--- a/src/mongo/db/catalog/collection_catalog.cpp
+++ b/src/mongo/db/catalog/collection_catalog.cpp
@@ -40,6 +40,7 @@
#include "mongo/db/server_options.h"
#include "mongo/db/storage/recovery_unit.h"
#include "mongo/db/storage/snapshot_helper.h"
+#include "mongo/db/storage/storage_parameters_gen.h"
#include "mongo/logv2/log.h"
#include "mongo/util/assert_util.h"
#include "mongo/util/uuid.h"
@@ -1219,7 +1220,8 @@ std::shared_ptr<Collection> CollectionCatalog::deregisterCollection(OperationCon
invariant(_collections.find(ns) != _collections.end());
invariant(_orderedCollections.find(dbIdPair) != _orderedCollections.end());
- if (isDropPending) {
+ // TODO SERVER-68674: Remove feature flag check.
+ if (feature_flags::gPointInTimeCatalogLookups.isEnabledAndIgnoreFCV() && isDropPending) {
auto ident = coll->getSharedIdent()->getIdent();
LOGV2_DEBUG(6825300, 1, "Registering drop pending collection ident", "ident"_attr = ident);
@@ -1346,7 +1348,8 @@ void CollectionCatalog::clearViews(OperationContext* opCtx, const DatabaseName&
void CollectionCatalog::deregisterIndex(OperationContext* opCtx,
std::shared_ptr<IndexCatalogEntry> indexEntry,
bool isDropPending) {
- if (!isDropPending) {
+ // TODO SERVER-68674: Remove feature flag check.
+ if (!feature_flags::gPointInTimeCatalogLookups.isEnabledAndIgnoreFCV() || !isDropPending) {
// No-op.
return;
}
diff --git a/src/mongo/db/storage/SConscript b/src/mongo/db/storage/SConscript
index 7b73ea2a25d..1bdc05203ab 100644
--- a/src/mongo/db/storage/SConscript
+++ b/src/mongo/db/storage/SConscript
@@ -571,6 +571,7 @@ env.Library(
],
LIBDEPS_PRIVATE=[
'$BUILD_DIR/mongo/db/multitenancy',
+ '$BUILD_DIR/mongo/db/storage/storage_options',
'durable_catalog_impl',
'kv/kv_drop_pending_ident_reaper',
],
diff --git a/src/mongo/db/storage/storage_util.cpp b/src/mongo/db/storage/storage_util.cpp
index f603504e023..46f3187c0c3 100644
--- a/src/mongo/db/storage/storage_util.cpp
+++ b/src/mongo/db/storage/storage_util.cpp
@@ -41,6 +41,7 @@
#include "mongo/db/storage/ident.h"
#include "mongo/db/storage/kv/kv_engine.h"
#include "mongo/db/storage/storage_engine.h"
+#include "mongo/db/storage/storage_parameters_gen.h"
#include "mongo/logv2/log.h"
#define MONGO_LOGV2_DEFAULT_COMPONENT ::mongo::logv2::LogComponent::kStorage
@@ -121,7 +122,8 @@ void removeIndex(OperationContext* opCtx,
const bool isTwoPhaseDrop =
storageEngine->supportsPendingDrops() && dataRemoval == DataRemoval::kTwoPhase;
- if (isTwoPhaseDrop) {
+ // TODO SERVER-68674: Remove feature flag check.
+ if (feature_flags::gPointInTimeCatalogLookups.isEnabledAndIgnoreFCV() && isTwoPhaseDrop) {
invariant(entry);
CollectionCatalog::get(opCtx)->dropIndex(
opCtx, collection->ns(), entry, /*isDropPending=*/true);
@@ -141,7 +143,9 @@ void removeIndex(OperationContext* opCtx,
[svcCtx, storageEngine, nss, ident = ident->getIdent(), isTwoPhaseDrop] {
removeEmptyDirectory(svcCtx, storageEngine, nss);
- if (isTwoPhaseDrop) {
+ // TODO SERVER-68674: Remove feature flag check.
+ if (feature_flags::gPointInTimeCatalogLookups.isEnabledAndIgnoreFCV() &&
+ isTwoPhaseDrop) {
CollectionCatalog::write(svcCtx, [&](CollectionCatalog& catalog) {
catalog.notifyIdentDropped(ident);
});
@@ -207,7 +211,9 @@ Status dropCollection(OperationContext* opCtx,
[svcCtx, storageEngine, nss, ident = ident->getIdent()] {
removeEmptyDirectory(svcCtx, storageEngine, nss);
- if (storageEngine->supportsPendingDrops()) {
+ // TODO SERVER-68674: Remove feature flag check.
+ if (feature_flags::gPointInTimeCatalogLookups.isEnabledAndIgnoreFCV() &&
+ storageEngine->supportsPendingDrops()) {
CollectionCatalog::write(svcCtx, [&](CollectionCatalog& catalog) {
catalog.notifyIdentDropped(ident);
});