summaryrefslogtreecommitdiff
path: root/src/mongo/db/s
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/s')
-rw-r--r--src/mongo/db/s/collection_sharding_runtime.cpp12
-rw-r--r--src/mongo/db/s/collmod_coordinator.cpp7
-rw-r--r--src/mongo/db/s/create_collection_coordinator.cpp9
-rw-r--r--src/mongo/db/s/drop_collection_coordinator.cpp7
-rw-r--r--src/mongo/db/s/flush_routing_table_cache_updates_command.cpp7
-rw-r--r--src/mongo/db/s/get_shard_version_command.cpp6
-rw-r--r--src/mongo/db/s/migration_source_manager.cpp6
-rw-r--r--src/mongo/db/s/refine_collection_shard_key_coordinator.cpp7
-rw-r--r--src/mongo/db/s/rename_collection_coordinator.cpp7
-rw-r--r--src/mongo/db/s/reshard_collection_coordinator.cpp7
-rw-r--r--src/mongo/db/s/resharding/resharding_oplog_application.cpp34
-rw-r--r--src/mongo/db/s/shard_key_util.cpp6
-rw-r--r--src/mongo/db/s/shard_server_op_observer.cpp46
-rw-r--r--src/mongo/db/s/sharding_ddl_util.cpp5
14 files changed, 101 insertions, 65 deletions
diff --git a/src/mongo/db/s/collection_sharding_runtime.cpp b/src/mongo/db/s/collection_sharding_runtime.cpp
index 664542076c5..54369d0aa5b 100644
--- a/src/mongo/db/s/collection_sharding_runtime.cpp
+++ b/src/mongo/db/s/collection_sharding_runtime.cpp
@@ -507,9 +507,9 @@ CollectionCriticalSection::CollectionCriticalSection(OperationContext* opCtx,
AutoGetCollection autoColl(_opCtx,
_nss,
MODE_S,
- AutoGetCollectionViewMode::kViewsForbidden,
- _opCtx->getServiceContext()->getPreciseClockSource()->now() +
- Milliseconds(migrationLockAcquisitionMaxWaitMS.load()));
+ AutoGetCollection::Options{}.deadline(
+ _opCtx->getServiceContext()->getPreciseClockSource()->now() +
+ Milliseconds(migrationLockAcquisitionMaxWaitMS.load())));
auto* const csr = CollectionShardingRuntime::get(_opCtx, _nss);
auto csrLock = CollectionShardingRuntime::CSRLock::lockExclusive(opCtx, csr);
invariant(csr->getCurrentMetadataIfKnown());
@@ -528,9 +528,9 @@ void CollectionCriticalSection::enterCommitPhase() {
AutoGetCollection autoColl(_opCtx,
_nss,
MODE_X,
- AutoGetCollectionViewMode::kViewsForbidden,
- _opCtx->getServiceContext()->getPreciseClockSource()->now() +
- Milliseconds(migrationLockAcquisitionMaxWaitMS.load()));
+ AutoGetCollection::Options{}.deadline(
+ _opCtx->getServiceContext()->getPreciseClockSource()->now() +
+ Milliseconds(migrationLockAcquisitionMaxWaitMS.load())));
auto* const csr = CollectionShardingRuntime::get(_opCtx, _nss);
auto csrLock = CollectionShardingRuntime::CSRLock::lockExclusive(_opCtx, csr);
invariant(csr->getCurrentMetadataIfKnown());
diff --git a/src/mongo/db/s/collmod_coordinator.cpp b/src/mongo/db/s/collmod_coordinator.cpp
index 3e5abedde21..9c6d352393f 100644
--- a/src/mongo/db/s/collmod_coordinator.cpp
+++ b/src/mongo/db/s/collmod_coordinator.cpp
@@ -159,8 +159,11 @@ ExecutorFuture<void> CollModCoordinator::_runImpl(
}
{
- AutoGetCollection coll{
- opCtx, nss(), MODE_IS, AutoGetCollectionViewMode::kViewsPermitted};
+ AutoGetCollection coll{opCtx,
+ nss(),
+ MODE_IS,
+ AutoGetCollection::Options{}.viewMode(
+ auto_get_collection::ViewMode::kViewsPermitted)};
checkCollectionUUIDMismatch(opCtx, nss(), *coll, _request.getCollectionUUID());
}
diff --git a/src/mongo/db/s/create_collection_coordinator.cpp b/src/mongo/db/s/create_collection_coordinator.cpp
index e49fc035752..ff58d129036 100644
--- a/src/mongo/db/s/create_collection_coordinator.cpp
+++ b/src/mongo/db/s/create_collection_coordinator.cpp
@@ -126,7 +126,7 @@ BSONObj resolveCollationForUserQueries(OperationContext* opCtx,
!requestedCollator);
}
- AutoGetCollection autoColl(opCtx, nss, MODE_IS, AutoGetCollectionViewMode::kViewsForbidden);
+ AutoGetCollection autoColl(opCtx, nss, MODE_IS);
const auto actualCollator = [&]() -> const CollatorInterface* {
const auto& coll = autoColl.getCollection();
@@ -926,8 +926,11 @@ void CreateCollectionCoordinator::_createCollectionAndIndexes(
ShardingRecoveryService::get(opCtx)->releaseRecoverableCriticalSection(
opCtx, originalNss(), _critSecReason, ShardingCatalogClient::kMajorityWriteConcern);
_doc.setDisregardCriticalSectionOnOriginalNss(true);
- viewLock.emplace(
- opCtx, originalNss(), LockMode::MODE_X, AutoGetCollectionViewMode::kViewsPermitted);
+ viewLock.emplace(opCtx,
+ originalNss(),
+ LockMode::MODE_X,
+ AutoGetCollection::Options{}.viewMode(
+ auto_get_collection::ViewMode::kViewsPermitted));
// Once the exclusive access has been reacquired, ensure that no data race occurred.
auto catalog = CollectionCatalog::get(opCtx);
if (catalog->lookupView(opCtx, originalNss()) ||
diff --git a/src/mongo/db/s/drop_collection_coordinator.cpp b/src/mongo/db/s/drop_collection_coordinator.cpp
index 332d1bebf17..2a658d16066 100644
--- a/src/mongo/db/s/drop_collection_coordinator.cpp
+++ b/src/mongo/db/s/drop_collection_coordinator.cpp
@@ -87,8 +87,11 @@ ExecutorFuture<void> DropCollectionCoordinator::_runImpl(
}
{
- AutoGetCollection coll{
- opCtx, nss(), MODE_IS, AutoGetCollectionViewMode::kViewsPermitted};
+ AutoGetCollection coll{opCtx,
+ nss(),
+ MODE_IS,
+ AutoGetCollection::Options{}.viewMode(
+ auto_get_collection::ViewMode::kViewsPermitted)};
checkCollectionUUIDMismatch(opCtx, nss(), *coll, _doc.getCollectionUUID());
}
diff --git a/src/mongo/db/s/flush_routing_table_cache_updates_command.cpp b/src/mongo/db/s/flush_routing_table_cache_updates_command.cpp
index f85f73c0ef4..5ddda7894a8 100644
--- a/src/mongo/db/s/flush_routing_table_cache_updates_command.cpp
+++ b/src/mongo/db/s/flush_routing_table_cache_updates_command.cpp
@@ -117,8 +117,11 @@ public:
boost::optional<SharedSemiFuture<void>> criticalSectionSignal;
{
- AutoGetCollection autoColl(
- opCtx, ns(), MODE_IS, AutoGetCollectionViewMode::kViewsPermitted);
+ AutoGetCollection autoColl(opCtx,
+ ns(),
+ MODE_IS,
+ AutoGetCollection::Options{}.viewMode(
+ auto_get_collection::ViewMode::kViewsPermitted));
// If the primary is in the critical section, secondaries must wait for the commit
// to finish on the primary in case a secondary's caller has an afterClusterTime
diff --git a/src/mongo/db/s/get_shard_version_command.cpp b/src/mongo/db/s/get_shard_version_command.cpp
index 858e1be224f..391d9d2ca71 100644
--- a/src/mongo/db/s/get_shard_version_command.cpp
+++ b/src/mongo/db/s/get_shard_version_command.cpp
@@ -92,7 +92,11 @@ public:
"configServer",
Grid::get(opCtx)->shardRegistry()->getConfigServerConnectionString().toString());
- AutoGetCollection autoColl(opCtx, nss, MODE_IS, AutoGetCollectionViewMode::kViewsPermitted);
+ AutoGetCollection autoColl(
+ opCtx,
+ nss,
+ MODE_IS,
+ AutoGetCollection::Options{}.viewMode(auto_get_collection::ViewMode::kViewsPermitted));
auto* const csr = CollectionShardingRuntime::get(opCtx, nss);
const auto optMetadata = csr->getCurrentMetadataIfKnown();
diff --git a/src/mongo/db/s/migration_source_manager.cpp b/src/mongo/db/s/migration_source_manager.cpp
index 164af14539b..5dd023e176f 100644
--- a/src/mongo/db/s/migration_source_manager.cpp
+++ b/src/mongo/db/s/migration_source_manager.cpp
@@ -276,9 +276,9 @@ void MigrationSourceManager::startClone() {
AutoGetCollection autoColl(_opCtx,
nss(),
replEnabled ? MODE_IX : MODE_X,
- AutoGetCollectionViewMode::kViewsForbidden,
- _opCtx->getServiceContext()->getPreciseClockSource()->now() +
- Milliseconds(migrationLockAcquisitionMaxWaitMS.load()));
+ AutoGetCollection::Options{}.deadline(
+ _opCtx->getServiceContext()->getPreciseClockSource()->now() +
+ Milliseconds(migrationLockAcquisitionMaxWaitMS.load())));
auto* const csr = CollectionShardingRuntime::get(_opCtx, nss());
const auto csrLock = CollectionShardingRuntime::CSRLock::lockExclusive(_opCtx, csr);
diff --git a/src/mongo/db/s/refine_collection_shard_key_coordinator.cpp b/src/mongo/db/s/refine_collection_shard_key_coordinator.cpp
index 0a617517986..42ba6cbfb15 100644
--- a/src/mongo/db/s/refine_collection_shard_key_coordinator.cpp
+++ b/src/mongo/db/s/refine_collection_shard_key_coordinator.cpp
@@ -118,8 +118,11 @@ ExecutorFuture<void> RefineCollectionShardKeyCoordinator::_runImpl(
getForwardableOpMetadata().setOn(opCtx);
{
- AutoGetCollection coll{
- opCtx, nss(), MODE_IS, AutoGetCollectionViewMode::kViewsPermitted};
+ AutoGetCollection coll{opCtx,
+ nss(),
+ MODE_IS,
+ AutoGetCollection::Options{}.viewMode(
+ auto_get_collection::ViewMode::kViewsPermitted)};
checkCollectionUUIDMismatch(opCtx, nss(), *coll, _request.getCollectionUUID());
}
diff --git a/src/mongo/db/s/rename_collection_coordinator.cpp b/src/mongo/db/s/rename_collection_coordinator.cpp
index e1dc8fea867..9f0c978d321 100644
--- a/src/mongo/db/s/rename_collection_coordinator.cpp
+++ b/src/mongo/db/s/rename_collection_coordinator.cpp
@@ -147,8 +147,11 @@ ExecutorFuture<void> RenameCollectionCoordinator::_runImpl(
(!_doc.getExpectedSourceUUID() && !_doc.getExpectedTargetUUID()));
{
- AutoGetCollection coll{
- opCtx, fromNss, MODE_IS, AutoGetCollectionViewMode::kViewsPermitted};
+ AutoGetCollection coll{opCtx,
+ fromNss,
+ MODE_IS,
+ AutoGetCollection::Options{}.viewMode(
+ auto_get_collection::ViewMode::kViewsPermitted)};
checkCollectionUUIDMismatch(
opCtx, fromNss, *coll, _doc.getExpectedSourceUUID());
diff --git a/src/mongo/db/s/reshard_collection_coordinator.cpp b/src/mongo/db/s/reshard_collection_coordinator.cpp
index 28872ee8268..7f4d5ce9095 100644
--- a/src/mongo/db/s/reshard_collection_coordinator.cpp
+++ b/src/mongo/db/s/reshard_collection_coordinator.cpp
@@ -137,8 +137,11 @@ ExecutorFuture<void> ReshardCollectionCoordinator::_runImpl(
getForwardableOpMetadata().setOn(opCtx);
{
- AutoGetCollection coll{
- opCtx, nss(), MODE_IS, AutoGetCollectionViewMode::kViewsPermitted};
+ AutoGetCollection coll{opCtx,
+ nss(),
+ MODE_IS,
+ AutoGetCollection::Options{}.viewMode(
+ auto_get_collection::ViewMode::kViewsPermitted)};
checkCollectionUUIDMismatch(opCtx, nss(), *coll, _doc.getCollectionUUID());
}
diff --git a/src/mongo/db/s/resharding/resharding_oplog_application.cpp b/src/mongo/db/s/resharding/resharding_oplog_application.cpp
index 775ec10d37a..89da093dda5 100644
--- a/src/mongo/db/s/resharding/resharding_oplog_application.cpp
+++ b/src/mongo/db/s/resharding/resharding_oplog_application.cpp
@@ -145,22 +145,22 @@ Status ReshardingOplogApplicationRules::applyOperation(OperationContext* opCtx,
try {
WriteUnitOfWork wuow(opCtx);
- AutoGetCollection autoCollOutput(opCtx,
- _outputNss,
- MODE_IX,
- AutoGetCollectionViewMode::kViewsForbidden,
- getDeadline(opCtx));
+ AutoGetCollection autoCollOutput(
+ opCtx,
+ _outputNss,
+ MODE_IX,
+ AutoGetCollection::Options{}.deadline(getDeadline(opCtx)));
uassert(
ErrorCodes::NamespaceNotFound,
str::stream() << "Failed to apply op during resharding due to missing collection "
<< _outputNss.ns(),
autoCollOutput);
- AutoGetCollection autoCollStash(opCtx,
- _myStashNss,
- MODE_IX,
- AutoGetCollectionViewMode::kViewsForbidden,
- getDeadline(opCtx));
+ AutoGetCollection autoCollStash(
+ opCtx,
+ _myStashNss,
+ MODE_IX,
+ AutoGetCollection::Options{}.deadline(getDeadline(opCtx)));
uassert(
ErrorCodes::NamespaceNotFound,
str::stream() << "Failed to apply op during resharding due to missing collection "
@@ -451,11 +451,8 @@ void ReshardingOplogApplicationRules::_applyDelete_inlock(OperationContext* opCt
// single replica set transaction that is executed if we apply rule #4, so we therefore must run
// 'findByIdAndNoopUpdate' as a part of the single replica set transaction.
runWithTransaction(opCtx, _outputNss, [this, idQuery](OperationContext* opCtx) {
- AutoGetCollection autoCollOutput(opCtx,
- _outputNss,
- MODE_IX,
- AutoGetCollectionViewMode::kViewsForbidden,
- getDeadline(opCtx));
+ AutoGetCollection autoCollOutput(
+ opCtx, _outputNss, MODE_IX, AutoGetCollection::Options{}.deadline(getDeadline(opCtx)));
uassert(ErrorCodes::NamespaceNotFound,
str::stream() << "Failed to apply op during resharding due to missing collection "
<< _outputNss.ns(),
@@ -500,11 +497,8 @@ void ReshardingOplogApplicationRules::_applyDelete_inlock(OperationContext* opCt
continue;
}
- AutoGetCollection autoCollStash(opCtx,
- coll,
- MODE_IX,
- AutoGetCollectionViewMode::kViewsForbidden,
- getDeadline(opCtx));
+ AutoGetCollection autoCollStash(
+ opCtx, coll, MODE_IX, AutoGetCollection::Options{}.deadline(getDeadline(opCtx)));
uassert(
ErrorCodes::NamespaceNotFound,
str::stream() << "Failed to apply op during resharding due to missing collection "
diff --git a/src/mongo/db/s/shard_key_util.cpp b/src/mongo/db/s/shard_key_util.cpp
index 95283ba0049..33f597cee8b 100644
--- a/src/mongo/db/s/shard_key_util.cpp
+++ b/src/mongo/db/s/shard_key_util.cpp
@@ -235,7 +235,11 @@ bool validateShardKeyIndexExistsOrCreateIfPossible(OperationContext* opCtx,
void validateShardKeyIsNotEncrypted(OperationContext* opCtx,
const NamespaceString& nss,
const ShardKeyPattern& shardKeyPattern) {
- AutoGetCollection collection(opCtx, nss, MODE_IS, AutoGetCollectionViewMode::kViewsPermitted);
+ AutoGetCollection collection(
+ opCtx,
+ nss,
+ MODE_IS,
+ AutoGetCollection::Options{}.viewMode(auto_get_collection::ViewMode::kViewsPermitted));
if (!collection || collection.getView()) {
return;
}
diff --git a/src/mongo/db/s/shard_server_op_observer.cpp b/src/mongo/db/s/shard_server_op_observer.cpp
index 0e138e333ec..a148115c004 100644
--- a/src/mongo/db/s/shard_server_op_observer.cpp
+++ b/src/mongo/db/s/shard_server_op_observer.cpp
@@ -294,21 +294,25 @@ void ShardServerOpObserver::onInserts(OperationContext* opCtx,
!recoverable_critical_section_util::inRecoveryMode(opCtx)) {
const auto collCSDoc = CollectionCriticalSectionDocument::parse(
IDLParserContext("ShardServerOpObserver"), insertedDoc);
- opCtx->recoveryUnit()->onCommit([opCtx,
- insertedNss = collCSDoc.getNss(),
- reason = collCSDoc.getReason().getOwned()](
- boost::optional<Timestamp>) {
- boost::optional<AutoGetCollection> lockCollectionIfNotPrimary;
- if (!isStandaloneOrPrimary(opCtx)) {
- lockCollectionIfNotPrimary.emplace(
- opCtx, insertedNss, MODE_IX, AutoGetCollectionViewMode::kViewsPermitted);
- }
-
- UninterruptibleLockGuard noInterrupt(opCtx->lockState());
- auto* const csr = CollectionShardingRuntime::get(opCtx, insertedNss);
- auto csrLock = CollectionShardingRuntime ::CSRLock::lockExclusive(opCtx, csr);
- csr->enterCriticalSectionCatchUpPhase(csrLock, reason);
- });
+ opCtx->recoveryUnit()->onCommit(
+ [opCtx,
+ insertedNss = collCSDoc.getNss(),
+ reason = collCSDoc.getReason().getOwned()](boost::optional<Timestamp>) {
+ boost::optional<AutoGetCollection> lockCollectionIfNotPrimary;
+ if (!isStandaloneOrPrimary(opCtx)) {
+ lockCollectionIfNotPrimary.emplace(
+ opCtx,
+ insertedNss,
+ MODE_IX,
+ AutoGetCollection::Options{}.viewMode(
+ auto_get_collection::ViewMode::kViewsPermitted));
+ }
+
+ UninterruptibleLockGuard noInterrupt(opCtx->lockState());
+ auto* const csr = CollectionShardingRuntime::get(opCtx, insertedNss);
+ auto csrLock = CollectionShardingRuntime ::CSRLock::lockExclusive(opCtx, csr);
+ csr->enterCriticalSectionCatchUpPhase(csrLock, reason);
+ });
}
if (nss == NamespaceString::kShardCollectionCatalogNamespace &&
@@ -464,7 +468,11 @@ void ShardServerOpObserver::onUpdate(OperationContext* opCtx, const OplogUpdateE
boost::optional<AutoGetCollection> lockCollectionIfNotPrimary;
if (!isStandaloneOrPrimary(opCtx)) {
lockCollectionIfNotPrimary.emplace(
- opCtx, updatedNss, MODE_IX, AutoGetCollectionViewMode::kViewsPermitted);
+ opCtx,
+ updatedNss,
+ MODE_IX,
+ AutoGetCollection::Options{}.viewMode(
+ auto_get_collection::ViewMode::kViewsPermitted));
}
UninterruptibleLockGuard noInterrupt(opCtx->lockState());
@@ -580,7 +588,11 @@ void ShardServerOpObserver::onDelete(OperationContext* opCtx,
boost::optional<AutoGetCollection> lockCollectionIfNotPrimary;
if (!isStandaloneOrPrimary(opCtx)) {
lockCollectionIfNotPrimary.emplace(
- opCtx, deletedNss, MODE_IX, AutoGetCollectionViewMode::kViewsPermitted);
+ opCtx,
+ deletedNss,
+ MODE_IX,
+ AutoGetCollection::Options{}.viewMode(
+ auto_get_collection::ViewMode::kViewsPermitted));
}
UninterruptibleLockGuard noInterrupt(opCtx->lockState());
diff --git a/src/mongo/db/s/sharding_ddl_util.cpp b/src/mongo/db/s/sharding_ddl_util.cpp
index 626e9e7624d..ba16739d2ff 100644
--- a/src/mongo/db/s/sharding_ddl_util.cpp
+++ b/src/mongo/db/s/sharding_ddl_util.cpp
@@ -546,8 +546,9 @@ boost::optional<UUID> getCollectionUUID(OperationContext* opCtx,
AutoGetCollection autoColl(opCtx,
nss,
MODE_IS,
- allowViews ? AutoGetCollectionViewMode::kViewsPermitted
- : AutoGetCollectionViewMode::kViewsForbidden);
+ AutoGetCollection::Options{}.viewMode(
+ allowViews ? auto_get_collection::ViewMode::kViewsPermitted
+ : auto_get_collection::ViewMode::kViewsForbidden));
return autoColl ? boost::make_optional(autoColl->uuid()) : boost::none;
}