diff options
Diffstat (limited to 'src/mongo/db/s')
-rw-r--r-- | src/mongo/db/s/collection_sharding_runtime.cpp | 12 | ||||
-rw-r--r-- | src/mongo/db/s/collmod_coordinator.cpp | 7 | ||||
-rw-r--r-- | src/mongo/db/s/create_collection_coordinator.cpp | 9 | ||||
-rw-r--r-- | src/mongo/db/s/drop_collection_coordinator.cpp | 7 | ||||
-rw-r--r-- | src/mongo/db/s/flush_routing_table_cache_updates_command.cpp | 7 | ||||
-rw-r--r-- | src/mongo/db/s/get_shard_version_command.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/s/migration_source_manager.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/s/refine_collection_shard_key_coordinator.cpp | 7 | ||||
-rw-r--r-- | src/mongo/db/s/rename_collection_coordinator.cpp | 7 | ||||
-rw-r--r-- | src/mongo/db/s/reshard_collection_coordinator.cpp | 7 | ||||
-rw-r--r-- | src/mongo/db/s/resharding/resharding_oplog_application.cpp | 34 | ||||
-rw-r--r-- | src/mongo/db/s/shard_key_util.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/s/shard_server_op_observer.cpp | 46 | ||||
-rw-r--r-- | src/mongo/db/s/sharding_ddl_util.cpp | 5 |
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; } |