-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: 9.1.0-rc0
-
Component/s: Catalog
-
None
-
Catalog and Routing
-
🟦 Shard Catalog
-
None
-
None
-
None
-
None
-
None
-
None
This is a proposed add-on / follow-up to SERVER-126806.
With SERVER-126806, the catalog's timestamp-aware cache is populated at startup (at recoveryTimestamp) then kept up to date with DDL operations. However to serve reads at t < recoveryTimestamp we'd need to still need to have a fallback path which does a catalog full scan by NSS/UUID then populates the HistoricalCatalogIdTracker.
However all data needed to populate the timestamp-aware cache up from the beginning of the _mdb_catalog WiredTiger snapshot history exists on disk. We can read history a WiredTiger dump_version cursor and put it in the cache by committing it at a past commit_timestamp.
This has the following advantages:
- Avoid catalog full scans to make catalog performance predictable.
- Remove the complexity of the HistoricalCatalogIdTracker.
- Unify all catalog accesses into a single path.
The main roadblock is that WiredTiger's dump_version API is documented as a debug feature. We should discuss if that can be made acceptable for us, or find an alternative.
- is related to
-
SERVER-126806 Refactor CollectionCatalog to use timestamp and transaction aware cache for collections
-
- Backlog
-