-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Catalog and Routing
-
Fully Compatible
-
CAR Team 2024-03-18, CAR Team 2024-04-01
-
5
In the context of the "Make dedicated config servers optional for shared clusters" project (PM-2290), the config server's catalog cache was changed (SERVER-72489) to use the ShardServerCatalogCacheLoader (SSCCL) instead of the ConfigServerCatalogCacheLoader (CSCCL).
This caused performance degradation as the SSCCL persists cluster metadata on internal collections (config.cache.*). Indeed, there are config server's background activities, balancer and index consistency checker, that periodically refresh the catalog cache causing disk writes. In turn, in scenarios with a high number of collections, this causes a significant memory increase due to the presence of the WiredTiger data handlers.
As a result, this change was reverted on the 7.x branches (SERVER-84548).
The mid-term solution is to rely on SERVER-84243 to have two distinct catalog caches, respectively for routing and filtering information. However, for version 8.0, a tactical solution is needed.
The proposed approach is to introduce a secondary and technical catalog cache, based on CSCCL, specifically for use by the config server's background activities. When a MongoD process is configured as a config server, whether embedded or dedicated, the primary catalog cache (on the Grid) will utilize SSCCL, while the secondary one will use CSCCL. The latter would be exclusively used by the balancer and index consistency checker implementation.
The objective of this ticket is to investigate and potentially fully implement the proposed solution for 8.0.
- related to
-
SERVER-84243 Dedicate a catalog cache and loader to the shard role
- In Progress
-
SERVER-86163 Ensure upgrades from 7.x to 8.0 handle CatalogCacheLoader changes.
- Closed