diff options
author | jannaerin <golden.janna@gmail.com> | 2022-10-27 04:31:16 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-10-27 16:59:12 +0000 |
commit | 6fc0fceb929a37f34882b52bdc59a5c3aa63716f (patch) | |
tree | 5640ae3721f195af4366a4ab8967652f26166e2b /src/mongo/rpc | |
parent | 734191d9d0c5225ec4ca9309068cf3c04c445c74 (diff) | |
download | mongo-6fc0fceb929a37f34882b52bdc59a5c3aa63716f.tar.gz |
SERVER-70053 Serialize and deserialize DatabaseName correctly in multitenancy mode
Diffstat (limited to 'src/mongo/rpc')
-rw-r--r-- | src/mongo/rpc/SConscript | 1 | ||||
-rw-r--r-- | src/mongo/rpc/op_msg.cpp | 6 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/mongo/rpc/SConscript b/src/mongo/rpc/SConscript index 4ec2445e872..9d1dafcc1b6 100644 --- a/src/mongo/rpc/SConscript +++ b/src/mongo/rpc/SConscript @@ -44,6 +44,7 @@ protoEnv.Library( '$BUILD_DIR/mongo/db/bson/dotted_path_support', '$BUILD_DIR/mongo/db/server_base', '$BUILD_DIR/mongo/db/server_options_core', + '$BUILD_DIR/mongo/util/namespace_string_database_name_util', '$BUILD_DIR/third_party/wiredtiger/wiredtiger_checksum' if wiredtiger else [], ], ) diff --git a/src/mongo/rpc/op_msg.cpp b/src/mongo/rpc/op_msg.cpp index e6213828ed4..5f8a87438a0 100644 --- a/src/mongo/rpc/op_msg.cpp +++ b/src/mongo/rpc/op_msg.cpp @@ -43,6 +43,7 @@ #include "mongo/logv2/log.h" #include "mongo/rpc/object_check.h" #include "mongo/util/bufreader.h" +#include "mongo/util/database_name_util.h" #include "mongo/util/hex.h" #ifdef MONGO_CONFIG_WIREDTIGER_ENABLED @@ -300,9 +301,12 @@ OpMsgRequest OpMsgRequestBuilder::create(const DatabaseName& dbName, auto dollarTenant = parseDollarTenant(body); BSONObjBuilder bodyBuilder(std::move(body)); bodyBuilder.appendElements(extraFields); - bodyBuilder.append("$db", dbName.db()); if (dbName.tenantId()) { + // If we append $tenant, never include the prefix in $db as well. + bodyBuilder.append("$db", dbName.db()); appendDollarTenant(bodyBuilder, dbName.tenantId().value(), dollarTenant); + } else { + bodyBuilder.append("$db", DatabaseNameUtil::serialize(dbName)); } OpMsgRequest request; |