summaryrefslogtreecommitdiff
path: root/src/mongo/s/transaction_router.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/s/transaction_router.cpp')
-rw-r--r--src/mongo/s/transaction_router.cpp36
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},