diff options
Diffstat (limited to 'src/mongo/db/commands/list_indexes.cpp')
-rw-r--r-- | src/mongo/db/commands/list_indexes.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/mongo/db/commands/list_indexes.cpp b/src/mongo/db/commands/list_indexes.cpp index 59721e91ce4..bc9d164b65f 100644 --- a/src/mongo/db/commands/list_indexes.cpp +++ b/src/mongo/db/commands/list_indexes.cpp @@ -48,6 +48,7 @@ #include "mongo/db/query/cursor_response.h" #include "mongo/db/query/find_common.h" #include "mongo/db/service_context.h" +#include "mongo/db/storage/durable_catalog.h" #include "mongo/db/storage/storage_engine.h" #include "mongo/util/uuid.h" @@ -154,8 +155,7 @@ public: str::stream() << "ns does not exist: " << ctx.getNss().ns(), collection); - const CollectionCatalogEntry* cce = collection->getCatalogEntry(); - invariant(cce); + auto durableCatalog = DurableCatalog::get(opCtx); nss = ctx.getNss(); @@ -165,7 +165,7 @@ public: vector<string> indexNames; writeConflictRetry(opCtx, "listIndexes", nss.ns(), [&] { indexNames.clear(); - cce->getAllIndexes(opCtx, &indexNames); + durableCatalog->getAllIndexes(opCtx, nss, &indexNames); }); auto ws = std::make_unique<WorkingSet>(); @@ -173,16 +173,18 @@ public: for (size_t i = 0; i < indexNames.size(); i++) { auto indexSpec = writeConflictRetry(opCtx, "listIndexes", nss.ns(), [&] { - if (includeBuildUUIDs && !cce->isIndexReady(opCtx, indexNames[i])) { + if (includeBuildUUIDs && + !durableCatalog->isIndexReady(opCtx, nss, indexNames[i])) { BSONObjBuilder builder; - builder.append("spec"_sd, cce->getIndexSpec(opCtx, indexNames[i])); + builder.append("spec"_sd, + durableCatalog->getIndexSpec(opCtx, nss, indexNames[i])); // TODO(SERVER-37980): Replace with index build UUID. auto indexBuildUUID = UUID::gen(); indexBuildUUID.appendToBuilder(&builder, "buildUUID"_sd); return builder.obj(); } - return cce->getIndexSpec(opCtx, indexNames[i]); + return durableCatalog->getIndexSpec(opCtx, nss, indexNames[i]); }); WorkingSetID id = ws->allocate(); |