From cfde5ef0adebbd59f2105fb2182b7d2f151526a4 Mon Sep 17 00:00:00 2001 From: Alex Taskov Date: Sat, 18 Jan 2020 04:21:28 +0000 Subject: SERVER-45647 Remove lsid and txnNumber from MigrationCoordinator doc --- jstests/sharding/migration_coordinator_basic.js | 2 -- src/mongo/db/s/migration_coordinator.cpp | 18 ++++-------------- src/mongo/db/s/migration_coordinator.h | 11 ++++------- src/mongo/db/s/migration_coordinator_document.idl | 7 ------- src/mongo/db/s/migration_source_manager.cpp | 7 ------- src/mongo/db/s/migration_util.cpp | 22 ++++++---------------- src/mongo/db/s/migration_util.h | 9 ++------- 7 files changed, 16 insertions(+), 60 deletions(-) diff --git a/jstests/sharding/migration_coordinator_basic.js b/jstests/sharding/migration_coordinator_basic.js index 040e90d2407..03aaee4e2d1 100644 --- a/jstests/sharding/migration_coordinator_basic.js +++ b/jstests/sharding/migration_coordinator_basic.js @@ -40,8 +40,6 @@ function getCollectionUuidAndEpoch(ns) { function assertHasMigrationCoordinatorDoc({conn, ns, uuid, epoch}) { const query = { - lsid: {$exists: 1}, - txnNumber: {$exists: 1}, nss: ns, collectionUuid: uuid, donorShardId: st.shard0.shardName, diff --git a/src/mongo/db/s/migration_coordinator.cpp b/src/mongo/db/s/migration_coordinator.cpp index 8d7521689da..38e2d47b5c4 100644 --- a/src/mongo/db/s/migration_coordinator.cpp +++ b/src/mongo/db/s/migration_coordinator.cpp @@ -45,8 +45,6 @@ MONGO_FAIL_POINT_DEFINE(disableWritingPendingRangeDeletionEntries); namespace migrationutil { MigrationCoordinator::MigrationCoordinator(UUID migrationId, - LogicalSessionId lsid, - TxnNumber txnNumber, ShardId donorShard, ShardId recipientShard, NamespaceString collectionNamespace, @@ -54,8 +52,6 @@ MigrationCoordinator::MigrationCoordinator(UUID migrationId, ChunkRange range, ChunkVersion preMigrationChunkVersion) : _migrationInfo(migrationId, - std::move(lsid), - txnNumber, std::move(collectionNamespace), collectionUuid, std::move(donorShard), @@ -120,11 +116,8 @@ void MigrationCoordinator::_commitMigrationOnDonorAndRecipient(OperationContext* migrationutil::persistCommitDecision(opCtx, _migrationInfo.getId()); LOG(0) << _logPrefix() << "Deleting range deletion task on recipient"; - migrationutil::deleteRangeDeletionTaskOnRecipient(opCtx, - _migrationInfo.getRecipientShardId(), - _migrationInfo.getId(), - _migrationInfo.getLsid(), - _migrationInfo.getTxnNumber()); + migrationutil::deleteRangeDeletionTaskOnRecipient( + opCtx, _migrationInfo.getRecipientShardId(), _migrationInfo.getId()); LOG(0) << _logPrefix() << "Marking range deletion task on donor as ready for processing"; migrationutil::markAsReadyRangeDeletionTaskLocally(opCtx, _migrationInfo.getId()); @@ -138,11 +131,8 @@ void MigrationCoordinator::_abortMigrationOnDonorAndRecipient(OperationContext* migrationutil::deleteRangeDeletionTaskLocally(opCtx, _migrationInfo.getId()); LOG(0) << _logPrefix() << "Marking range deletion task on recipient as ready for processing"; - migrationutil::markAsReadyRangeDeletionTaskOnRecipient(opCtx, - _migrationInfo.getRecipientShardId(), - _migrationInfo.getId(), - _migrationInfo.getLsid(), - _migrationInfo.getTxnNumber()); + migrationutil::markAsReadyRangeDeletionTaskOnRecipient( + opCtx, _migrationInfo.getRecipientShardId(), _migrationInfo.getId()); } void MigrationCoordinator::_forgetMigration(OperationContext* opCtx) { diff --git a/src/mongo/db/s/migration_coordinator.h b/src/mongo/db/s/migration_coordinator.h index c85c78ddc8a..7185642c01c 100644 --- a/src/mongo/db/s/migration_coordinator.h +++ b/src/mongo/db/s/migration_coordinator.h @@ -29,7 +29,6 @@ #pragma once -#include "mongo/db/logical_session_id.h" #include "mongo/db/s/collection_sharding_runtime.h" #include "mongo/db/s/migration_coordinator_document_gen.h" #include "mongo/s/catalog/type_chunk.h" @@ -48,8 +47,6 @@ public: enum class Decision { kAborted, kCommitted }; MigrationCoordinator(UUID migrationId, - LogicalSessionId lsid, - TxnNumber txnNumber, ShardId donorShard, ShardId recipientShard, NamespaceString collectionNamespace, @@ -67,10 +64,10 @@ public: * Initializes persistent state required to ensure that orphaned ranges are properly handled, * even after failover, by doing the following: * - * 1) Inserts a document into the local config.migrationCoordinators with the lsid, txnNumber, - * and recipientId and waits for majority writeConcern. - * 2) Inserts a document into the local config.rangeDeletions with the collectionUUID, range to - * delete, and "pending: true" and waits for majority writeConcern. + * 1) Inserts a document into the local config.migrationCoordinators with the recipientId and + * waits for majority writeConcern. 2) Inserts a document into the local config.rangeDeletions + * with the collectionUUID, range to delete, and "pending: true" and waits for majority + * writeConcern. */ void startMigration(OperationContext* opCtx, bool waitForDelete); diff --git a/src/mongo/db/s/migration_coordinator_document.idl b/src/mongo/db/s/migration_coordinator_document.idl index 74814abda01..9e1310fbf79 100644 --- a/src/mongo/db/s/migration_coordinator_document.idl +++ b/src/mongo/db/s/migration_coordinator_document.idl @@ -37,7 +37,6 @@ imports: - "mongo/s/sharding_types.idl" - "mongo/s/chunk_range.idl" - "mongo/s/chunk_version.idl" - - "mongo/db/logical_session_id.idl" structs: migrationCoordinatorDocument: @@ -49,12 +48,6 @@ structs: type: uuid description: "A unique identifier for the migration." cpp_name: id - lsid: - type: LogicalSessionId - description: "The sessionId to use to communicate with the recipient" - txnNumber: - type: TxnNumber - description: "The txnNumber to use to communicate with the recipient" nss: type: namespacestring description: "The namespace of the collection that the chunk belongs to." diff --git a/src/mongo/db/s/migration_source_manager.cpp b/src/mongo/db/s/migration_source_manager.cpp index 4155ef4dada..0380e137b4b 100644 --- a/src/mongo/db/s/migration_source_manager.cpp +++ b/src/mongo/db/s/migration_source_manager.cpp @@ -285,15 +285,8 @@ Status MigrationSourceManager::startClone() { invariant(nullptr == std::exchange(msmForCsr(csr), this)); if (_useFCV44Protocol) { - // TODO (SERVER-xxx): Allow re-using the same session (though different transaction - // number) across migrations. - auto lsid = makeLogicalSessionId(_opCtx); - auto txnNumber = TxnNumber{0}; - _coordinator = std::make_unique( migrationId, - lsid, - txnNumber, _args.getFromShardId(), _args.getToShardId(), getNss(), diff --git a/src/mongo/db/s/migration_util.cpp b/src/mongo/db/s/migration_util.cpp index f6affab21bf..fc0f27d564f 100644 --- a/src/mongo/db/s/migration_util.cpp +++ b/src/mongo/db/s/migration_util.cpp @@ -71,11 +71,7 @@ const WriteConcernOptions kMajorityWriteConcern(WriteConcernOptions::kMajority, WriteConcernOptions::kNoTimeout); template -void sendToRecipient(OperationContext* opCtx, - const ShardId& recipientId, - const Cmd& cmd, - const LogicalSessionId& lsid, - const TxnNumber txnNumber) { +void sendToRecipient(OperationContext* opCtx, const ShardId& recipientId, const Cmd& cmd) { auto recipientShard = uassertStatusOK(Grid::get(opCtx)->shardRegistry()->getShard(opCtx, recipientId)); @@ -85,9 +81,7 @@ void sendToRecipient(OperationContext* opCtx, opCtx, ReadPreferenceSetting{ReadPreference::PrimaryOnly}, "config", - cmd.toBSON(BSON("lsid" << lsid.toBSON() << "txnNumber" << txnNumber - << WriteConcernOptions::kWriteConcernField - << WriteConcernOptions::Majority)), + cmd.toBSON(BSON(WriteConcernOptions::kWriteConcernField << WriteConcernOptions::Majority)), Shard::RetryPolicy::kIdempotent); uassertStatusOK(Shard::CommandResponse::getEffectiveStatus(response)); @@ -349,15 +343,13 @@ void persistAbortDecision(OperationContext* opCtx, const UUID& migrationId) { void deleteRangeDeletionTaskOnRecipient(OperationContext* opCtx, const ShardId& recipientId, - const UUID& migrationId, - const LogicalSessionId& lsid, - const TxnNumber txnNumber) { + const UUID& migrationId) { write_ops::Delete deleteOp(NamespaceString::kRangeDeletionNamespace); write_ops::DeleteOpEntry query(BSON(RangeDeletionTask::kIdFieldName << migrationId), false /*multi*/); deleteOp.setDeletes({query}); - sendToRecipient(opCtx, recipientId, deleteOp, lsid, txnNumber); + sendToRecipient(opCtx, recipientId, deleteOp); } void deleteRangeDeletionTaskLocally(OperationContext* opCtx, const UUID& deletionTaskId) { @@ -373,9 +365,7 @@ void deleteRangeDeletionTasksForCollectionLocally(OperationContext* opCtx, void markAsReadyRangeDeletionTaskOnRecipient(OperationContext* opCtx, const ShardId& recipientId, - const UUID& migrationId, - const LogicalSessionId& lsid, - const TxnNumber txnNumber) { + const UUID& migrationId) { write_ops::Update updateOp(NamespaceString::kRangeDeletionNamespace); auto queryFilter = BSON(RangeDeletionTask::kIdFieldName << migrationId); auto updateModification = write_ops::UpdateModification( @@ -385,7 +375,7 @@ void markAsReadyRangeDeletionTaskOnRecipient(OperationContext* opCtx, updateEntry.setUpsert(false); updateOp.setUpdates({updateEntry}); - sendToRecipient(opCtx, recipientId, updateOp, lsid, txnNumber); + sendToRecipient(opCtx, recipientId, updateOp); } void markAsReadyRangeDeletionTaskLocally(OperationContext* opCtx, const UUID& migrationId) { diff --git a/src/mongo/db/s/migration_util.h b/src/mongo/db/s/migration_util.h index 8f99930f601..4bf07cfd40e 100644 --- a/src/mongo/db/s/migration_util.h +++ b/src/mongo/db/s/migration_util.h @@ -29,7 +29,6 @@ #pragma once -#include "mongo/db/logical_session_id.h" #include "mongo/db/repl/optime.h" #include "mongo/db/s/migration_coordinator_document_gen.h" #include "mongo/db/s/persistent_task_store.h" @@ -146,9 +145,7 @@ void deleteRangeDeletionTasksForCollectionLocally(OperationContext* opCtx, */ void deleteRangeDeletionTaskOnRecipient(OperationContext* opCtx, const ShardId& recipientId, - const UUID& migrationId, - const LogicalSessionId& lsid, - const TxnNumber txnNumber); + const UUID& migrationId); /** * Removes the 'pending' flag from the range deletion task document with the specified id from @@ -165,9 +162,7 @@ void markAsReadyRangeDeletionTaskLocally(OperationContext* opCtx, const UUID& mi */ void markAsReadyRangeDeletionTaskOnRecipient(OperationContext* opCtx, const ShardId& recipientId, - const UUID& migrationId, - const LogicalSessionId& lsid, - const TxnNumber txnNumber); + const UUID& migrationId); /** * Deletes the migration coordinator document with the specified id from -- cgit v1.2.1