diff options
author | Dianna Hohensee <dianna.hohensee@10gen.com> | 2018-07-03 17:44:44 -0400 |
---|---|---|
committer | Dianna Hohensee <dianna.hohensee@10gen.com> | 2018-07-13 19:50:40 -0400 |
commit | 9184a03574c398b087b929fda8ed428f0c64d28c (patch) | |
tree | ce18b03959d5945c9ee10ae056fbb640c48c6649 /src/mongo/db/commands/dbcommands.cpp | |
parent | 93accf1620db95d4aa7edbd5bbc017264b28e0f2 (diff) | |
download | mongo-r4.1.1.tar.gz |
SERVER-35085 Hide the visibility of UUIDCatalog changes during repairDatabase cmdr4.1.1
Added RAII object around UUIDCatalog::onCloseCatalog and UUIDCatalog::onOpenCatalog
Diffstat (limited to 'src/mongo/db/commands/dbcommands.cpp')
-rw-r--r-- | src/mongo/db/commands/dbcommands.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/mongo/db/commands/dbcommands.cpp b/src/mongo/db/commands/dbcommands.cpp index 90d2cd2d5f0..56d28ebb53a 100644 --- a/src/mongo/db/commands/dbcommands.cpp +++ b/src/mongo/db/commands/dbcommands.cpp @@ -247,13 +247,21 @@ public: "backupOriginalFiles not supported", !cmdObj.getField("backupOriginalFiles").trueValue()); - StorageEngine* engine = getGlobalServiceContext()->getStorageEngine(); - repl::UnreplicatedWritesBlock uwb(opCtx); - Status status = repairDatabase(opCtx, engine, dbname); + { + // Conceal UUIDCatalog changes for the duration of repairDatabase so that calls to + // UUIDCatalog::lookupNSSByUUID do not cause spurious NamespaceNotFound errors while + // repairDatabase makes updates. + ConcealUUIDCatalogChangesBlock cucc(opCtx); + + StorageEngine* engine = getGlobalServiceContext()->getStorageEngine(); + repl::UnreplicatedWritesBlock uwb(opCtx); + Status status = repairDatabase(opCtx, engine, dbname); + + // Open database before returning + DatabaseHolder::getDatabaseHolder().openDb(opCtx, dbname); + uassertStatusOK(status); + } - // Open database before returning - DatabaseHolder::getDatabaseHolder().openDb(opCtx, dbname); - uassertStatusOK(status); return true; } } cmdRepairDatabase; |