Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
Currently, all index metadata is stored in the Catalog. This is problematic, because
- Some fields (like txWaitCatalogVersion) or states (like STOPPING) do not belong to the Catalog
- The Catalog may be compacted making it impossible to get metadata from it
We need to create a component (based on Vault) to store metadata for each index. An index entry can include (the list is rough):
- Index ID
- Name? (not sure if we need it; maybe for building messages for humans)
- txWaitCatalogVersion
- History of how the index changed its state (with activation timestamp of each transition)
- Current state
The states set is broader than the set stored in the Catalog:
- REGISTERED
- BUILDING
- AVAILABLE
- STOPPED
- READ_ONLY (this means that the index was dropped (maybe together with its table), it cannot be written to, it can not be used by any RW transactions, but can be read by RO transactions with correct readTimestamp)
- DESTROYED? (it's not clear if it's needed or not)
The storage should provide efficient access to index metadata by index ID.
It should listen to Catalog updates and actualize itself if some changes happen to indexes.
If should also listen to LWM to switch from READ_ONLY state.
Attachments
Issue Links
- blocks
-
IGNITE-21771 Use Index Metadata storage instead of Catalog
-
- Open
-
- links to