diff options
Diffstat (limited to 'src/mongo/embedded/embedded_ismaster.cpp')
-rw-r--r-- | src/mongo/embedded/embedded_ismaster.cpp | 28 |
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); |