The collection metadata in CollectionImpl tracks both the uncommitted changes in memory and the persisted state in DurableCatalog. The IndexCatalogEntry updates the collection metadata for multikey by calling CollectionImpl::setIndexIsMultikey(). All updates on the collection metadata has to be done in a storage transaction (WriteUnitOfWork) with cleanup handlers to clear the uncommitted state if the transaction is aborted. If a WriteConflictException is thrown from DurableCatalog::putMetaData() before the rollback handler to remove the uncommitted multikey state is installed, we may end up with a collection metadata state where subsequent writers may observe uncommitted multikey information that should have been discarded.
- is related to
-
SERVER-56002 listIndexes can read partial state from renameCollection
- Closed
-
SERVER-56023 listCollections can return empty metadata for a collection which has been concurrently dropped
- Closed
-
SERVER-56877 insert operations may fail to set index to multikey after aborted multikey catalog update
- Closed
-
SERVER-57127 Refactor multikey and other state out of IndexCatalogEntry
- Closed
- related to
-
SERVER-57786 include collection UUID and redacted documents in validation report
- Closed