diff options
author | Blake Oler <blake.oler@mongodb.com> | 2019-01-22 17:51:11 -0500 |
---|---|---|
committer | Blake Oler <blake.oler@mongodb.com> | 2019-02-05 14:25:37 -0500 |
commit | 75d64b2e170abf1d22058e3afffdaf872a4c067c (patch) | |
tree | 62945a032b04a10750343a33f5a8c9bed487aeb2 /src/mongo/db/catalog_raii.cpp | |
parent | a63d20c82d3703b3dfb0afc1afdff1e882a1fa96 (diff) | |
download | mongo-75d64b2e170abf1d22058e3afffdaf872a4c067c.tar.gz |
SERVER-38473 Create DatabaseShardingStateLock to ensure concurrency around DatabaseShardingState usage
Diffstat (limited to 'src/mongo/db/catalog_raii.cpp')
-rw-r--r-- | src/mongo/db/catalog_raii.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/mongo/db/catalog_raii.cpp b/src/mongo/db/catalog_raii.cpp index 342c4d60a61..fdefc58956a 100644 --- a/src/mongo/db/catalog_raii.cpp +++ b/src/mongo/db/catalog_raii.cpp @@ -59,7 +59,9 @@ AutoGetDb::AutoGetDb(OperationContext* opCtx, StringData dbName, LockMode mode, return databaseHolder->getDb(opCtx, dbName); }()) { if (_db) { - DatabaseShardingState::get(_db).checkDbVersion(opCtx); + auto& dss = DatabaseShardingState::get(_db); + auto dssLock = DatabaseShardingState::DSSLock::lock(opCtx, &dss); + dss.checkDbVersion(opCtx, dssLock); } } @@ -171,7 +173,9 @@ AutoGetOrCreateDb::AutoGetOrCreateDb(OperationContext* opCtx, _db = databaseHolder->openDb(opCtx, dbName, &_justCreated); } - DatabaseShardingState::get(_db).checkDbVersion(opCtx); + auto& dss = DatabaseShardingState::get(_db); + auto dssLock = DatabaseShardingState::DSSLock::lock(opCtx, &dss); + dss.checkDbVersion(opCtx, dssLock); } ConcealUUIDCatalogChangesBlock::ConcealUUIDCatalogChangesBlock(OperationContext* opCtx) |