diff options
author | Gregory Wlodarek <gregory.wlodarek@mongodb.com> | 2019-11-18 23:25:46 +0000 |
---|---|---|
committer | evergreen <evergreen@mongodb.com> | 2019-11-18 23:25:46 +0000 |
commit | eb4706d4f2fff6fa87197bb7e8d6de2c0c1b49c9 (patch) | |
tree | 2a5b469412389eb99a0e3c3d21f74f38eeea111a | |
parent | 38f2881335ab6052c24cfc4270529363e7cc2816 (diff) | |
download | mongo-eb4706d4f2fff6fa87197bb7e8d6de2c0c1b49c9.tar.gz |
SERVER-44028 Remove global X lock for Cloner
(cherry picked from commit 6e1889fb793e1927a5ca695c8839f9184e5d8aa4)
-rw-r--r-- | src/mongo/db/cloner.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/mongo/db/cloner.cpp b/src/mongo/db/cloner.cpp index c2f40073f1e..7f9d4f67b93 100644 --- a/src/mongo/db/cloner.cpp +++ b/src/mongo/db/cloner.cpp @@ -127,8 +127,8 @@ struct Cloner::Fun { : lastLog(0), opCtx(opCtx), _dbName(dbName) {} void operator()(DBClientCursorBatchIterator& i) { - // XXX: can probably take dblock instead - unique_ptr<Lock::GlobalWrite> globalWriteLock(new Lock::GlobalWrite(opCtx)); + boost::optional<Lock::DBLock> dbLock; + dbLock.emplace(opCtx, _dbName, MODE_X); uassert( ErrorCodes::NotMaster, str::stream() << "Not primary while cloning collection " << from_collection.ns() @@ -184,11 +184,11 @@ struct Cloner::Fun { } opCtx->checkForInterrupt(); - globalWriteLock.reset(); + dbLock.reset(); CurOp::get(opCtx)->yielded(); - globalWriteLock.reset(new Lock::GlobalWrite(opCtx)); + dbLock.emplace(opCtx, _dbName, MODE_X); // Check if everything is still all right. if (opCtx->writesAreReplicated()) { |