{"record":{"id":"93ab2ff8e4df8517","repo":"quickwit-oss/quickwit","slug":"max-num-concurrent-split-searches-must-be-low","errorCode":null,"errorMessage":"max_num_concurrent_split_searches ({}) must be lower or equal to split_cache.max_file_descriptors ({})","messagePattern":"max_num_concurrent_split_searches \\((.+?)\\) must be lower or equal to split_cache\\.max_file_descriptors \\((.+?)\\)","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"quickwit/quickwit-config/src/node_config/mod.rs","lineNumber":699,"sourceCode":"\nimpl SearcherConfig {\n    /// The timeout applied at the gRPC layer for search requests\n    pub fn request_timeout(&self) -> Duration {\n        Duration::from_secs(self.request_timeout_secs.get())\n    }\n    /// The timeout applied at the leaf search layer\n    pub fn leaf_request_timeout(&self) -> Duration {\n        Duration::from_secs(self.leaf_request_timeout_secs.get())\n    }\n    fn default_request_timeout_secs() -> NonZeroU64 {\n        NonZeroU64::new(30).unwrap()\n    }\n    fn validate(&self) -> anyhow::Result<()> {\n        if let Some(split_cache_limits) = self.split_cache {\n            if self.max_num_concurrent_split_searches\n                > split_cache_limits.max_file_descriptors.get() as usize\n            {\n                anyhow::bail!(\n                    \"max_num_concurrent_split_searches ({}) must be lower or equal to \\\n                     split_cache.max_file_descriptors ({})\",\n                    self.max_num_concurrent_split_searches,\n                    split_cache_limits.max_file_descriptors\n                );\n            }\n            if self.warmup_single_split_initial_allocation > self.warmup_memory_budget {\n                anyhow::bail!(\n                    \"warmup_single_split_initial_allocation ({}) must be lower or equal to \\\n                     warmup_memory_budget ({})\",\n                    self.warmup_single_split_initial_allocation,\n                    self.warmup_memory_budget\n                );\n            }\n        }\n        Ok(())\n    }\n}","sourceCodeStart":681,"sourceCodeEnd":717,"githubUrl":"https://github.com/quickwit-oss/quickwit/blob/a39730c5cdcd1a4fe798403737ae293999ea21f8/quickwit/quickwit-config/src/node_config/mod.rs#L681-L717","documentation":"SearcherConfig validation found that `searcher.max_num_concurrent_split_searches` exceeds `searcher.split_cache.max_file_descriptors`. Each concurrent split search needs a file descriptor from the split cache's budget, so a higher concurrency than the fd limit can never be satisfied.","triggerScenarios":"Thrown at quickwit/quickwit-config/src/node_config/mod.rs:699 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Lower `max_num_concurrent_split_searches` to at most `split_cache.max_file_descriptors`","Raise `split_cache.max_file_descriptors` if the OS fd limit allows"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a39730c5cdcd1a4fe798403737ae293999ea21f8","analyzedAt":"2026-09-08T13:19:37.784Z","contentChangedAt":"2026-09-08T13:19:37.784Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}