diff options
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; |