-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Catalog and Routing
-
Fully Compatible
-
ALL
-
v8.0
-
CAR Team 2024-06-24
-
0
The CatalogCache executor pool is limited to 6 threads. CollectionCache, DatabaseCache, and IndexCache share this executor.
- In the config shard, 6 threads are refreshing the CollectionCache for different namespaces, occupying all threads in the pool.
- The refresh eventually reaches out to the config server through ConfigServerCatalogCacheLoader, and runs an aggregation on it.
- The aggregation uses (readPreference: nearest).
- The aggregation doesn't use timeout when the node itself is config server.
- Targeting returns this node.
- Execution of the aggregation, which contains a $unionWith, and preparing the subpipeline involves routing.
- This schedules a job in the CatalogCache thread pool, to fetch the routing information for "config" database.
- And waits for it to complete, which never does because no threads in the pool will ever be freed due to the circular dependency.