diff options
author | Sophia Tan <sophia_tll@hotmail.com> | 2022-02-03 14:09:41 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-02-03 14:54:57 +0000 |
commit | c81c668189f7c7a933661d1e225aacfdbc33840d (patch) | |
tree | 7a650c5cb0c5ba8bf3569005d93bc1428bad1005 /src/mongo/db/catalog_raii.cpp | |
parent | 7e917657f0f23fc962010a2f2e1a837309b787ae (diff) | |
download | mongo-c81c668189f7c7a933661d1e225aacfdbc33840d.tar.gz |
SERVER-61987 Change DatabaseHolder's map to be keyed by TenantDatabaseName
Diffstat (limited to 'src/mongo/db/catalog_raii.cpp')
-rw-r--r-- | src/mongo/db/catalog_raii.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/mongo/db/catalog_raii.cpp b/src/mongo/db/catalog_raii.cpp index cc986ecadd0..8645ea5fc40 100644 --- a/src/mongo/db/catalog_raii.cpp +++ b/src/mongo/db/catalog_raii.cpp @@ -50,7 +50,8 @@ MONGO_FAIL_POINT_DEFINE(setAutoGetCollectionWait); * Returns true if 'nss' is a view. False if the namespace or view doesn't exist. */ bool isSecondaryNssAView(OperationContext* opCtx, const NamespaceString& nss) { - auto viewCatalog = DatabaseHolder::get(opCtx)->getViewCatalog(opCtx, nss.db()); + TenantDatabaseName tenantDbName(boost::none, nss.db()); + auto viewCatalog = DatabaseHolder::get(opCtx)->getViewCatalog(opCtx, tenantDbName); return viewCatalog && viewCatalog->lookup(opCtx, nss); } @@ -167,14 +168,16 @@ void acquireCollectionLocksInResourceIdOrder( } // namespace +// TODO SERVER-62918 Pass TenantDatabaseName instead of string for dbName. AutoGetDb::AutoGetDb(OperationContext* opCtx, StringData dbName, LockMode mode, Date_t deadline, const std::set<StringData>& secondaryDbNames) : _dbName(dbName), _dbLock(opCtx, dbName, mode, deadline), _db([&] { + const TenantDatabaseName tenantDbName(boost::none, dbName); auto databaseHolder = DatabaseHolder::get(opCtx); - return databaseHolder->getDb(opCtx, dbName); + return databaseHolder->getDb(opCtx, tenantDbName); }()) { // Locking multiple databases is only supported in intent read mode (MODE_IS). invariant(secondaryDbNames.empty() || mode == MODE_IS); @@ -206,7 +209,8 @@ Database* AutoGetDb::ensureDbExists(OperationContext* opCtx) { } auto databaseHolder = DatabaseHolder::get(opCtx); - _db = databaseHolder->openDb(opCtx, _dbName, nullptr); + const TenantDatabaseName tenantDbName(boost::none, _dbName); + _db = databaseHolder->openDb(opCtx, tenantDbName, nullptr); auto dss = DatabaseShardingState::get(opCtx, _dbName); auto dssLock = DatabaseShardingState::DSSLock::lockShared(opCtx, dss); @@ -275,12 +279,14 @@ AutoGetCollection::AutoGetCollection( auto secondaryResolvedNss = catalog->resolveNamespaceStringOrUUID(opCtx, secondaryNssOrUUID); auto secondaryColl = catalog->lookupCollectionByNamespace(opCtx, secondaryResolvedNss); + // TODO SERVER-62926 Change collection lock RAII types to use TenantNamespace + const TenantDatabaseName secondaryTenantDbName(boost::none, secondaryNssOrUUID.db()); verifyDbAndCollection(opCtx, MODE_IS, secondaryNssOrUUID, secondaryResolvedNss, secondaryColl, - databaseHolder->getDb(opCtx, secondaryNssOrUUID.db())); + databaseHolder->getDb(opCtx, secondaryTenantDbName)); // Flag if a secondary namespace is a view. if (!_secondaryNssIsView && isSecondaryNssAView(opCtx, secondaryResolvedNss)) { @@ -401,7 +407,8 @@ AutoGetCollectionLockFree::AutoGetCollectionLockFree(OperationContext* opCtx, } // Returns nullptr for 'viewCatalog' if db does not exist. - auto viewCatalog = DatabaseHolder::get(opCtx)->getViewCatalog(opCtx, _resolvedNss.db()); + const TenantDatabaseName tenantDbName(boost::none, _resolvedNss.db()); + auto viewCatalog = DatabaseHolder::get(opCtx)->getViewCatalog(opCtx, tenantDbName); if (!viewCatalog) { return; } |