summaryrefslogtreecommitdiff
path: root/src/mongo/db
diff options
context:
space:
mode:
authorGregory Wlodarek <gregory.wlodarek@mongodb.com>2019-04-05 10:41:11 -0400
committerGregory Wlodarek <gregory.wlodarek@mongodb.com>2019-04-05 21:32:00 -0400
commite56e95ffb6ea8edf9c3f500ec8b6a12d92ed9498 (patch)
treee4b8e06e17fdf4ed63244019c19e6519c0c26a07 /src/mongo/db
parent0b4f23cf6567c05023e43d46729c6aa8712d7003 (diff)
downloadmongo-e56e95ffb6ea8edf9c3f500ec8b6a12d92ed9498.tar.gz
SERVER-40481 Fix data race in UUIDCatalog::iterator::iterator()
Diffstat (limited to 'src/mongo/db')
-rw-r--r--src/mongo/db/catalog/uuid_catalog.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/mongo/db/catalog/uuid_catalog.cpp b/src/mongo/db/catalog/uuid_catalog.cpp
index 8eba8c56860..9e83652c544 100644
--- a/src/mongo/db/catalog/uuid_catalog.cpp
+++ b/src/mongo/db/catalog/uuid_catalog.cpp
@@ -105,6 +105,8 @@ private:
UUIDCatalog::iterator::iterator(StringData dbName, uint64_t genNum, const UUIDCatalog& uuidCatalog)
: _dbName(dbName), _genNum(genNum), _uuidCatalog(&uuidCatalog) {
auto minUuid = UUID::parse("00000000-0000-0000-0000-000000000000").getValue();
+
+ stdx::lock_guard<stdx::mutex> lock(_uuidCatalog->_catalogLock);
_mapIter = _uuidCatalog->_orderedCollections.lower_bound(std::make_pair(_dbName, minUuid));
// The entry _mapIter points to is valid if it's not at the end of _orderedCollections and