summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/migration_util.cpp
diff options
context:
space:
mode:
authorAlex Taskov <alex.taskov@mongodb.com>2020-02-21 16:26:45 -0500
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-02-21 23:09:49 +0000
commit616564d1a5ea7217aa8b1e7f4c6d28800f0b65c9 (patch)
treeac5703336b02d40e83f7b14c954b41f6d3ceb1b1 /src/mongo/db/s/migration_util.cpp
parentd6c1d5f25f895cace27e2b165a1bee9e1865a2fd (diff)
downloadmongo-616564d1a5ea7217aa8b1e7f4c6d28800f0b65c9.tar.gz
SERVER-45952 moveChunk command should re-use lsid and use txnNumber that increments by two for each migration
Diffstat (limited to 'src/mongo/db/s/migration_util.cpp')
-rw-r--r--src/mongo/db/s/migration_util.cpp19
1 files changed, 5 insertions, 14 deletions
diff --git a/src/mongo/db/s/migration_util.cpp b/src/mongo/db/s/migration_util.cpp
index 75b0c8a24c2..593e660ff26 100644
--- a/src/mongo/db/s/migration_util.cpp
+++ b/src/mongo/db/s/migration_util.cpp
@@ -611,7 +611,7 @@ void markAsReadyRangeDeletionTaskOnRecipient(OperationContext* opCtx,
void advanceTransactionOnRecipient(OperationContext* opCtx,
const ShardId& recipientId,
const LogicalSessionId& lsid,
- TxnNumber txnNumber) {
+ TxnNumber currentTxnNumber) {
write_ops::Update updateOp(NamespaceString::kServerConfigurationNamespace);
auto queryFilter = BSON("_id"
<< "migrationCoordinatorStats");
@@ -622,9 +622,9 @@ void advanceTransactionOnRecipient(OperationContext* opCtx,
updateEntry.setUpsert(true);
updateOp.setUpdates({updateEntry});
- auto passthroughFields =
- BSON(WriteConcernOptions::kWriteConcernField << WriteConcernOptions::Majority << "lsid"
- << lsid.toBSON() << "txnNumber" << txnNumber);
+ auto passthroughFields = BSON(WriteConcernOptions::kWriteConcernField
+ << WriteConcernOptions::Majority << "lsid" << lsid.toBSON()
+ << "txnNumber" << currentTxnNumber + 1);
sendToRecipient(opCtx, recipientId, updateOp, passthroughFields);
}
@@ -770,16 +770,7 @@ void resumeMigrationCoordinationsOnStepUp(ServiceContext* serviceContext) {
LOGV2(22039, "Recovering migration {doc}", "doc"_attr = doc.toBSON());
// Create a MigrationCoordinator to complete the coordination.
- MigrationCoordinator coordinator(doc.getId(),
- doc.getMigrationSessionId(),
- doc.getLsid(),
- doc.getDonorShardId(),
- doc.getRecipientShardId(),
- doc.getNss(),
- doc.getCollectionUuid(),
- doc.getRange(),
- doc.getPreMigrationChunkVersion(),
- false /* waitForDelete */);
+ MigrationCoordinator coordinator(doc);
if (doc.getDecision()) {
// The decision is already known.