diff options
Diffstat (limited to 'src/mongo/db/storage/mmap_v1/catalog')
-rw-r--r-- | src/mongo/db/storage/mmap_v1/catalog/namespace_details_collection_entry.cpp | 21 | ||||
-rw-r--r-- | src/mongo/db/storage/mmap_v1/catalog/namespace_details_collection_entry.h | 2 |
2 files changed, 13 insertions, 10 deletions
diff --git a/src/mongo/db/storage/mmap_v1/catalog/namespace_details_collection_entry.cpp b/src/mongo/db/storage/mmap_v1/catalog/namespace_details_collection_entry.cpp index d010c2d2ed0..33e3e3ca78a 100644 --- a/src/mongo/db/storage/mmap_v1/catalog/namespace_details_collection_entry.cpp +++ b/src/mongo/db/storage/mmap_v1/catalog/namespace_details_collection_entry.cpp @@ -450,17 +450,20 @@ void NamespaceDetailsCollectionCatalogEntry::addUUID(OperationContext* opCtx, } bool NamespaceDetailsCollectionCatalogEntry::isEqualToMetadataUUID(OperationContext* opCtx, - CollectionUUID uuid) { - if (ns().coll() != "system.namespaces") { - RecordData namespaceData; - invariant(_namespacesRecordStore->findRecord(opCtx, _namespacesRecordId, &namespaceData)); - - auto namespacesBson = namespaceData.releaseToBson(); - auto optionsObj = namespacesBson["options"].Obj(); - return !optionsObj["uuid"].eoo() && UUID::parse(optionsObj["uuid"]).getValue() == uuid; - } else { + OptionalCollectionUUID uuid) { + if (ns().coll() == "system.namespaces") { return true; } + RecordData namespaceData; + invariant(_namespacesRecordStore->findRecord(opCtx, _namespacesRecordId, &namespaceData)); + + auto namespacesBson = namespaceData.releaseToBson(); + if (ns().coll() == "system.indexes") { + return !uuid && (!namespacesBson["options"].isABSONObj() || + namespacesBson["options"].Obj()["uuid"].eoo()); + } + auto optionsObj = namespacesBson["options"].Obj(); + return !optionsObj["uuid"].eoo() && UUID::parse(optionsObj["uuid"]).getValue() == uuid; } void NamespaceDetailsCollectionCatalogEntry::updateValidator(OperationContext* opCtx, diff --git a/src/mongo/db/storage/mmap_v1/catalog/namespace_details_collection_entry.h b/src/mongo/db/storage/mmap_v1/catalog/namespace_details_collection_entry.h index 3a8f04ee615..517128ae26d 100644 --- a/src/mongo/db/storage/mmap_v1/catalog/namespace_details_collection_entry.h +++ b/src/mongo/db/storage/mmap_v1/catalog/namespace_details_collection_entry.h @@ -104,7 +104,7 @@ public: void addUUID(OperationContext* opCtx, CollectionUUID uuid, Collection* coll) final; - bool isEqualToMetadataUUID(OperationContext* opCtx, CollectionUUID uuid); + bool isEqualToMetadataUUID(OperationContext* opCtx, OptionalCollectionUUID uuid); void updateValidator(OperationContext* opCtx, const BSONObj& validator, |