summaryrefslogtreecommitdiff
path: root/src/mongo/db/commands/dbcommands.cpp
diff options
context:
space:
mode:
authorDianna Hohensee <dianna.hohensee@10gen.com>2018-07-03 17:44:44 -0400
committerDianna Hohensee <dianna.hohensee@10gen.com>2018-07-13 19:50:40 -0400
commit9184a03574c398b087b929fda8ed428f0c64d28c (patch)
treece18b03959d5945c9ee10ae056fbb640c48c6649 /src/mongo/db/commands/dbcommands.cpp
parent93accf1620db95d4aa7edbd5bbc017264b28e0f2 (diff)
downloadmongo-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.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;