diff options
author | Alex Taskov <alex.taskov@mongodb.com> | 2020-02-21 16:26:45 -0500 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-02-21 23:09:49 +0000 |
commit | 616564d1a5ea7217aa8b1e7f4c6d28800f0b65c9 (patch) | |
tree | ac5703336b02d40e83f7b14c954b41f6d3ceb1b1 /src/mongo/db/s/migration_source_manager.cpp | |
parent | d6c1d5f25f895cace27e2b165a1bee9e1865a2fd (diff) | |
download | mongo-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_source_manager.cpp')
-rw-r--r-- | src/mongo/db/s/migration_source_manager.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/mongo/db/s/migration_source_manager.cpp b/src/mongo/db/s/migration_source_manager.cpp index 77382fb15b6..049609000eb 100644 --- a/src/mongo/db/s/migration_source_manager.cpp +++ b/src/mongo/db/s/migration_source_manager.cpp @@ -262,9 +262,6 @@ Status MigrationSourceManager::startClone() { auto replCoord = repl::ReplicationCoordinator::get(_opCtx); auto replEnabled = replCoord->isReplEnabled(); - UUID migrationId = UUID::gen(); - _lsid = makeLogicalSessionId(_opCtx); - { const auto metadata = _getCurrentMetadataAndCheckEpoch(); @@ -298,9 +295,7 @@ Status MigrationSourceManager::startClone() { if (_enableResumableRangeDeleter) { _coordinator = std::make_unique<migrationutil::MigrationCoordinator>( - migrationId, _cloneDriver->getSessionId(), - _lsid, _args.getFromShardId(), _args.getToShardId(), getNss(), @@ -324,11 +319,19 @@ Status MigrationSourceManager::startClone() { if (_enableResumableRangeDeleter) { _coordinator->startMigration(_opCtx); - } - Status startCloneStatus = _cloneDriver->startClone(_opCtx, migrationId, _lsid, TxnNumber{0}); - if (!startCloneStatus.isOK()) { - return startCloneStatus; + Status startCloneStatus = _cloneDriver->startClone(_opCtx, + _coordinator->getMigrationId(), + _coordinator->getLsid(), + _coordinator->getTxnNumber()); + if (!startCloneStatus.isOK()) { + return startCloneStatus; + } + } else { + Status startCloneStatus = _cloneDriver->startClone(_opCtx); + if (!startCloneStatus.isOK()) { + return startCloneStatus; + } } scopedGuard.dismiss(); @@ -765,6 +768,7 @@ void MigrationSourceManager::_cleanup() { auto newOpCtxPtr = cc().makeOperationContext(); auto newOpCtx = newOpCtxPtr.get(); _cleanupCompleteFuture = _coordinator->completeMigration(newOpCtx); + _coordinator.reset(); } } |