diff options
author | Matthew Saltz <matthew.saltz@mongodb.com> | 2019-11-22 18:58:48 +0000 |
---|---|---|
committer | evergreen <evergreen@mongodb.com> | 2019-11-22 18:58:48 +0000 |
commit | 9d6f438e6cb6f51c260727f876423fa2a19ca8c4 (patch) | |
tree | 29e97df07781128c0edcb66db8bd6aab58acc3f4 /src/mongo/db/s/start_chunk_clone_request.cpp | |
parent | dfe9a2f8776a0d5cae7eb2e894fc3fefc7ff2c9a (diff) | |
download | mongo-9d6f438e6cb6f51c260727f876423fa2a19ca8c4.tar.gz |
SERVER-44161 Add migration UUID to StartChunkCloneRequest
Diffstat (limited to 'src/mongo/db/s/start_chunk_clone_request.cpp')
-rw-r--r-- | src/mongo/db/s/start_chunk_clone_request.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/mongo/db/s/start_chunk_clone_request.cpp b/src/mongo/db/s/start_chunk_clone_request.cpp index 6fddc248baa..ad350452346 100644 --- a/src/mongo/db/s/start_chunk_clone_request.cpp +++ b/src/mongo/db/s/start_chunk_clone_request.cpp @@ -34,12 +34,15 @@ #include "mongo/base/status_with.h" #include "mongo/bson/bsonobjbuilder.h" #include "mongo/bson/util/bson_extract.h" +#include "mongo/db/commands/feature_compatibility_version.h" namespace mongo { namespace { const char kRecvChunkStart[] = "_recvChunkStart"; const char kFromShardConnectionString[] = "from"; +// Note: The UUID parsing code relies on this field being named 'uuid'. +const char kMigrationId[] = "uuid"; const char kFromShardId[] = "fromShardName"; const char kToShardId[] = "toShardName"; const char kChunkMinKey[] = "min"; @@ -71,6 +74,12 @@ StatusWith<StartChunkCloneRequest> StartChunkCloneRequest::createFromCommand(Nam std::move(sessionIdStatus.getValue()), std::move(secondaryThrottleStatus.getValue())); + // TODO (SERVER-44787): Remove this FCV check after 4.4 is released. + if (serverGlobalParams.featureCompatibility.getVersion() == + ServerGlobalParams::FeatureCompatibility::Version::kFullyUpgradedTo44) { + request._migrationId = UUID::parse(obj); + } + { std::string fromShardConnectionString; Status status = @@ -153,6 +162,7 @@ StatusWith<StartChunkCloneRequest> StartChunkCloneRequest::createFromCommand(Nam void StartChunkCloneRequest::appendAsCommand( BSONObjBuilder* builder, const NamespaceString& nss, + const UUID& migrationId, const MigrationSessionId& sessionId, const ConnectionString& fromShardConnectionString, const ShardId& fromShardId, @@ -166,6 +176,7 @@ void StartChunkCloneRequest::appendAsCommand( invariant(fromShardConnectionString.isValid()); builder->append(kRecvChunkStart, nss.ns()); + migrationId.appendToBuilder(builder, kMigrationId); sessionId.append(builder); builder->append(kFromShardConnectionString, fromShardConnectionString.toString()); builder->append(kFromShardId, fromShardId.toString()); |