diff options
author | Mathias Stearn <mathias@10gen.com> | 2014-08-13 15:15:02 -0400 |
---|---|---|
committer | Mathias Stearn <mathias@10gen.com> | 2014-08-20 13:57:04 -0400 |
commit | 562c8cb3faff5e9fc0acdc45db8dc2d498eb2000 (patch) | |
tree | edc8cc4fe059aa932c4cecbb3bdf10f147457c3d /src/mongo/db/catalog/database_holder.cpp | |
parent | 081f11c248433f74806b7508555b212bc4ff0164 (diff) | |
download | mongo-562c8cb3faff5e9fc0acdc45db8dc2d498eb2000.tar.gz |
SERVER-13951 Better scoping for many WUOWs
Diffstat (limited to 'src/mongo/db/catalog/database_holder.cpp')
-rw-r--r-- | src/mongo/db/catalog/database_holder.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/mongo/db/catalog/database_holder.cpp b/src/mongo/db/catalog/database_holder.cpp index fa12613c662..2498c72cd8c 100644 --- a/src/mongo/db/catalog/database_holder.cpp +++ b/src/mongo/db/catalog/database_holder.cpp @@ -117,12 +117,15 @@ namespace mongo { // this locks _m for defensive checks, so we don't want to be locked right here : StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); invariant(storageEngine); - DatabaseCatalogEntry* entry = storageEngine->getDatabaseCatalogEntry( txn, dbname ); - invariant( entry ); - justCreated = !entry->exists(); - Database *db = new Database(txn, - dbname, - entry ); + Database *db; + { + WriteUnitOfWork wunit(txn); + DatabaseCatalogEntry* entry = storageEngine->getDatabaseCatalogEntry(txn, dbname); + invariant(entry); + justCreated = !entry->exists(); + db = new Database(txn, dbname, entry); + wunit.commit(); + } { SimpleMutex::scoped_lock lk(_m); |