diff options
Diffstat (limited to 'src/mongo/db/catalog/collection_catalog.cpp')
-rw-r--r-- | src/mongo/db/catalog/collection_catalog.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/mongo/db/catalog/collection_catalog.cpp b/src/mongo/db/catalog/collection_catalog.cpp index 29bb7c6093c..676fd875853 100644 --- a/src/mongo/db/catalog/collection_catalog.cpp +++ b/src/mongo/db/catalog/collection_catalog.cpp @@ -835,16 +835,17 @@ void CollectionCatalog::onCloseDatabase(OperationContext* opCtx, DatabaseName db _viewsForDatabase.erase(dbName); } -void CollectionCatalog::onCloseCatalog(OperationContext* opCtx) { - invariant(opCtx->lockState()->isW()); - invariant(!_shadowCatalog); +void CollectionCatalog::onCloseCatalog() { + if (_shadowCatalog) { + return; + } + _shadowCatalog.emplace(); for (auto& entry : _catalog) _shadowCatalog->insert({entry.first, entry.second->ns()}); } -void CollectionCatalog::onOpenCatalog(OperationContext* opCtx) { - invariant(opCtx->lockState()->isW()); +void CollectionCatalog::onOpenCatalog() { invariant(_shadowCatalog); _shadowCatalog.reset(); ++_epoch; |