summaryrefslogtreecommitdiff
path: root/src/mongo/embedded/embedded_ismaster.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/embedded/embedded_ismaster.cpp')
-rw-r--r--src/mongo/embedded/embedded_ismaster.cpp28
1 files changed, 3 insertions, 25 deletions
diff --git a/src/mongo/embedded/embedded_ismaster.cpp b/src/mongo/embedded/embedded_ismaster.cpp
index e42c4292dac..aa636ab7280 100644
--- a/src/mongo/embedded/embedded_ismaster.cpp
+++ b/src/mongo/embedded/embedded_ismaster.cpp
@@ -33,7 +33,6 @@
#include "mongo/db/commands.h"
#include "mongo/db/ops/write_ops.h"
#include "mongo/rpc/metadata/client_metadata.h"
-#include "mongo/rpc/metadata/client_metadata_ismaster.h"
namespace mongo {
namespace {
@@ -67,30 +66,9 @@ public:
const std::string&,
const BSONObj& cmdObj,
BSONObjBuilder& result) {
-
- auto& clientMetadataIsMasterState = ClientMetadataIsMasterState::get(opCtx->getClient());
- bool seenIsMaster = clientMetadataIsMasterState.hasSeenIsMaster();
- if (!seenIsMaster) {
- clientMetadataIsMasterState.setSeenIsMaster();
- }
-
- BSONElement element = cmdObj[kMetadataDocumentName];
- if (!element.eoo()) {
- if (seenIsMaster) {
- uasserted(ErrorCodes::ClientMetadataCannotBeMutated,
- "The client metadata document may only be sent in the first isMaster");
- }
-
- auto swParseClientMetadata = ClientMetadata::parse(element);
- uassertStatusOK(swParseClientMetadata.getStatus());
-
- invariant(swParseClientMetadata.getValue());
-
- swParseClientMetadata.getValue().get().logClientMetadata(opCtx->getClient());
-
- clientMetadataIsMasterState.setClientMetadata(
- opCtx->getClient(), std::move(swParseClientMetadata.getValue()));
- }
+ auto metaElem = cmdObj[kMetadataDocumentName];
+ ClientMetadata::setFromMetadata(opCtx->getClient(), metaElem);
+ ClientMetadata::tryFinalize(opCtx->getClient());
result.appendBool("ismaster", true);