diff options
Diffstat (limited to 'src/mongo/s/transaction_router.cpp')
-rw-r--r-- | src/mongo/s/transaction_router.cpp | 36 |
1 files changed, 6 insertions, 30 deletions
diff --git a/src/mongo/s/transaction_router.cpp b/src/mongo/s/transaction_router.cpp index 07217ec089f..5b6ed2d3c02 100644 --- a/src/mongo/s/transaction_router.cpp +++ b/src/mongo/s/transaction_router.cpp @@ -28,7 +28,7 @@ * it in the license file. */ -#define MONGO_LOG_DEFAULT_COMPONENT ::mongo::logger::LogComponent::kSharding +#define MONGO_LOG_DEFAULT_COMPONENT ::mongo::logger::LogComponent::kTransaction #include "mongo/platform/basic.h" @@ -614,47 +614,23 @@ Shard::CommandResponse TransactionRouter::_commitSingleShardTransaction(Operatio Shard::CommandResponse TransactionRouter::_commitMultiShardTransaction(OperationContext* opCtx) { invariant(_coordinatorId); - - auto shardRegistry = Grid::get(opCtx)->shardRegistry(); - - PrepareTransaction prepareCmd; - prepareCmd.setDbName("admin"); - prepareCmd.setCoordinatorId(*_coordinatorId); - - auto prepareCmdObj = prepareCmd.toBSON( - BSON(WriteConcernOptions::kWriteConcernField << WriteConcernOptions::Majority)); + auto coordinatorIter = _participants.find(*_coordinatorId); + invariant(coordinatorIter != _participants.end()); std::vector<CommitParticipant> participantList; for (const auto& participantEntry : _participants) { - ShardId shardId(participantEntry.first); - CommitParticipant commitParticipant; - commitParticipant.setShardId(shardId); + commitParticipant.setShardId(participantEntry.first); participantList.push_back(std::move(commitParticipant)); - - if (participantEntry.second.isCoordinator()) { - // coordinateCommit is sent to participant that is also a coordinator. - invariant(shardId == *_coordinatorId); - continue; - } - - const auto& participant = participantEntry.second; - auto shard = uassertStatusOK(shardRegistry->getShard(opCtx, shardId)); - shard->runFireAndForgetCommand(opCtx, - ReadPreferenceSetting{ReadPreference::PrimaryOnly}, - "admin", - participant.attachTxnFieldsIfNeeded(prepareCmdObj, false)); } - auto coordinatorShard = uassertStatusOK(shardRegistry->getShard(opCtx, *_coordinatorId)); + auto coordinatorShard = + uassertStatusOK(Grid::get(opCtx)->shardRegistry()->getShard(opCtx, *_coordinatorId)); CoordinateCommitTransaction coordinateCommitCmd; coordinateCommitCmd.setDbName("admin"); coordinateCommitCmd.setParticipants(participantList); - auto coordinatorIter = _participants.find(*_coordinatorId); - invariant(coordinatorIter != _participants.end()); - return uassertStatusOK(coordinatorShard->runCommandWithFixedRetryAttempts( opCtx, ReadPreferenceSetting{ReadPreference::PrimaryOnly}, |