-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Execution
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Objective
Push index ident generation outside of the DurableCatalog while maintaining consistency between a catalog entry's 'idxIdent' and 'md.indexes'.
Current Code Structure
Today, an entry in the Durable Catalog contains both
(1) metadata ("md") with "md.indexes", an array with "IndexMetadata"
(2) "idxIdent" that is a mapping between an "index name" to "ident"
The top level "idxIdent" holds information about where the index table is stored by the storage engine and 'md.indexes' holds information about each index (key pattern, uniqueness, etc).
To create an index table we
- Generate new copy of catalog entry's "metadata".
- Update the collection's catalog entry on disk via DurableCatalog::putMetadata()
- Automatically create an "idxIdent" entry, if it doesn't already exist, for each index in 'md.indexes'.
- Guarantee: A catalog entry will always have an "idxIdent" entry for each index in "md.indexes".
- Create the actual table according to durable catalog entry's "idxIdent" ident.
In order to push index ident generation outside the DurableCatalog, we need a new way to ensure consistency between 'idxIdent' and 'md.indexes' for a catalog entry
- is related to
-
SERVER-100962 Manage unique ident generation in storage
-
- Closed
-