diff options
author | Pierlauro Sciarelli <pierlauro.sciarelli@mongodb.com> | 2021-07-24 08:38:42 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-07-24 09:04:21 +0000 |
commit | d4aa8951600a04d6b4233fa56e52dfd9e85eafbd (patch) | |
tree | 262e9751ac009287183d22284a4528c97bd91618 /src/mongo/db/s/drop_database_coordinator.cpp | |
parent | 2caadf6ecd74ee6c428e6eb269a35183e7ccd3c1 (diff) | |
download | mongo-d4aa8951600a04d6b4233fa56e52dfd9e85eafbd.tar.gz |
Revert "SERVER-58720 DropDatabaseCoordinator must not re-execute destructive logic after removing CSRS metadata"
This reverts commit 306a69a50245fb0787391c26597b02c04a156488.
Diffstat (limited to 'src/mongo/db/s/drop_database_coordinator.cpp')
-rw-r--r-- | src/mongo/db/s/drop_database_coordinator.cpp | 57 |
1 files changed, 20 insertions, 37 deletions
diff --git a/src/mongo/db/s/drop_database_coordinator.cpp b/src/mongo/db/s/drop_database_coordinator.cpp index 44d8795e3fe..2ee3584f809 100644 --- a/src/mongo/db/s/drop_database_coordinator.cpp +++ b/src/mongo/db/s/drop_database_coordinator.cpp @@ -232,19 +232,6 @@ ExecutorFuture<void> DropDatabaseCoordinator::_runImpl( // to proceed using the collection uuids to perform destructive operations sharding_ddl_util::performNoopMajorityWriteLocally(opCtx); - // ensure we do not delete collections of a different DB - if (!_firstExecution && _doc.getDatabaseVersion()) { - try { - const auto db = catalogClient->getDatabase( - opCtx, _dbName, repl::ReadConcernLevel::kLocalReadConcern); - if (_doc.getDatabaseVersion()->getUuid() != db.getVersion().getUuid()) { - return; // skip to _flushDatabaseCacheUpdates - } - } catch (const ExceptionFor<ErrorCodes::NamespaceNotFound>&) { - return; // skip to _flushDatabaseCacheUpdates - } - } - for (const auto& coll : allCollectionsForDb) { const auto& nss = coll.getNss(); LOGV2_DEBUG(5494505, 2, "Dropping collection", "namespace"_attr = nss); @@ -313,31 +300,27 @@ ExecutorFuture<void> DropDatabaseCoordinator::_runImpl( removeDatabaseMetadataFromConfig( opCtx, _dbName, *metadata().getDatabaseVersion()); } - })) - .then([this, executor = executor, anchor = shared_from_this()] { - auto opCtxHolder = cc().makeOperationContext(); - auto* opCtx = opCtxHolder.get(); - getForwardableOpMetadata().setOn(opCtx); - { - const auto allShardIds = Grid::get(opCtx)->shardRegistry()->getAllShardIds(opCtx); - // Send _flushDatabaseCacheUpdates to all shards - auto flushDbCacheUpdatesCmd = - _flushDatabaseCacheUpdatesWithWriteConcern(_dbName.toString()); - flushDbCacheUpdatesCmd.setSyncFromConfig(true); - flushDbCacheUpdatesCmd.setDbName(_dbName); - - IgnoreAPIParametersBlock ignoreApiParametersBlock{opCtx}; - sharding_ddl_util::sendAuthenticatedCommandToShards( - opCtx, - "admin", - CommandHelpers::appendMajorityWriteConcern(flushDbCacheUpdatesCmd.toBSON({})), - allShardIds, - **executor); - } - ShardingLogging::get(opCtx)->logChange(opCtx, "dropDatabase", _dbName); - LOGV2(5494506, "Database dropped", "db"_attr = _dbName); - }) + { + // Send _flushDatabaseCacheUpdates to all shards + auto flushDbCacheUpdatesCmd = + _flushDatabaseCacheUpdatesWithWriteConcern(_dbName.toString()); + flushDbCacheUpdatesCmd.setSyncFromConfig(true); + flushDbCacheUpdatesCmd.setDbName(_dbName); + + IgnoreAPIParametersBlock ignoreApiParametersBlock{opCtx}; + sharding_ddl_util::sendAuthenticatedCommandToShards( + opCtx, + "admin", + CommandHelpers::appendMajorityWriteConcern( + flushDbCacheUpdatesCmd.toBSON({})), + allShardIds, + **executor); + } + + ShardingLogging::get(opCtx)->logChange(opCtx, "dropDatabase", _dbName); + LOGV2(5494506, "Database dropped", "db"_attr = _dbName); + })) .onError([this, anchor = shared_from_this()](const Status& status) { if (!status.isA<ErrorCategory::NotPrimaryError>() && !status.isA<ErrorCategory::ShutdownError>()) { |