summaryrefslogtreecommitdiff
path: root/src/mongo/db/catalog_raii.cpp
diff options
context:
space:
mode:
authorBlake Oler <blake.oler@mongodb.com>2019-01-22 17:51:11 -0500
committerBlake Oler <blake.oler@mongodb.com>2019-02-05 14:25:37 -0500
commit75d64b2e170abf1d22058e3afffdaf872a4c067c (patch)
tree62945a032b04a10750343a33f5a8c9bed487aeb2 /src/mongo/db/catalog_raii.cpp
parenta63d20c82d3703b3dfb0afc1afdff1e882a1fa96 (diff)
downloadmongo-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.cpp8
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)