summaryrefslogtreecommitdiff
path: root/src/mongo/db/commands/dbcommands.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/commands/dbcommands.cpp')
-rw-r--r--src/mongo/db/commands/dbcommands.cpp20
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;