summaryrefslogtreecommitdiff
path: root/src/mongo/rpc
diff options
context:
space:
mode:
authorjannaerin <golden.janna@gmail.com>2022-10-27 04:31:16 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-10-27 16:59:12 +0000
commit6fc0fceb929a37f34882b52bdc59a5c3aa63716f (patch)
tree5640ae3721f195af4366a4ab8967652f26166e2b /src/mongo/rpc
parent734191d9d0c5225ec4ca9309068cf3c04c445c74 (diff)
downloadmongo-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/SConscript1
-rw-r--r--src/mongo/rpc/op_msg.cpp6
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;