summaryrefslogtreecommitdiff
path: root/src/mongo/db/namespace_string.cpp
diff options
context:
space:
mode:
authorSara Golemon <sara.golemon@mongodb.com>2022-06-16 14:15:24 -0500
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-07-07 16:06:08 +0000
commit51e8972dca292dbc6f80d13252b8555c8ce633c9 (patch)
tree9c48e9a142ba48faf17dc0fd9e8ddd8e444a0b69 /src/mongo/db/namespace_string.cpp
parenta7ce4c0c9b3abf5bc27675a4b5edde401371a2fd (diff)
downloadmongo-51e8972dca292dbc6f80d13252b8555c8ce633c9.tar.gz
SERVER-66586 Add multitenancy support to UMC commands
Diffstat (limited to 'src/mongo/db/namespace_string.cpp')
-rw-r--r--src/mongo/db/namespace_string.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/mongo/db/namespace_string.cpp b/src/mongo/db/namespace_string.cpp
index 399bebab90d..6ad3b027165 100644
--- a/src/mongo/db/namespace_string.cpp
+++ b/src/mongo/db/namespace_string.cpp
@@ -203,7 +203,23 @@ bool NamespaceString::isCollectionlessAggregateNS() const {
bool NamespaceString::isLegalClientSystemNS(
const ServerGlobalParams::FeatureCompatibility& currentFCV) const {
- if (db() == kAdminDb) {
+ auto dbname = dbName().db();
+
+ NamespaceString parsedNSS;
+ if (gMultitenancySupport && !tenantId()) {
+ // TODO (SERVER-67423) Remove support for mangled dbname in isLegalClientSystemNS check
+ // Transitional support for accepting tenantId as a mangled database name.
+ try {
+ parsedNSS = parseFromStringExpectTenantIdInMultitenancyMode(ns());
+ if (parsedNSS.tenantId()) {
+ dbname = parsedNSS.dbName().db();
+ }
+ } catch (const DBException&) {
+ // Swallow exception.
+ }
+ }
+
+ if (dbname == kAdminDb) {
if (coll() == "system.roles")
return true;
if (coll() == kServerConfigurationNamespace.coll())
@@ -212,7 +228,7 @@ bool NamespaceString::isLegalClientSystemNS(
return true;
if (coll() == "system.backup_users")
return true;
- } else if (db() == kConfigDb) {
+ } else if (dbname == kConfigDb) {
if (coll() == "system.sessions")
return true;
if (coll() == kIndexBuildEntryNamespace.coll())
@@ -223,7 +239,7 @@ bool NamespaceString::isLegalClientSystemNS(
return true;
if (coll() == kConfigsvrCoordinatorsNamespace.coll())
return true;
- } else if (db() == kLocalDb) {
+ } else if (dbname == kLocalDb) {
if (coll() == kSystemReplSetNamespace.coll())
return true;
if (coll() == "system.healthlog")