quickwit-oss/quickwit · error
fd_semaphore acquire failed. please report
Error message
fd_semaphore acquire failed. please report
What it means
`FileDescriptorCache::get_or_open_split_file` tried to acquire the file-descriptor semaphore guarding concurrent split file opens, and the acquire failed. Since the semaphore has no closure path in normal operation, this only happens if it was closed by shutdown — the `.expect` marks it as an internal invariant breach ('please report') rather than a user error.
Source
Thrown at quickwit/quickwit-storage/src/file_descriptor_cache.rs:137
.inc_by(split_ids.len() as u64);
}
pub async fn get_or_open_split_file(
&self,
root_path: &Path,
split_id: SplitId,
num_bytes: u64,
) -> std::io::Result<SplitFile> {
if let Some(split_file) = self.get_split_file(&split_id) {
self.fd_cache_metrics.hits_num_items.inc();
return Ok(split_file);
} else {
self.fd_cache_metrics.misses_num_items.inc();
}
let split_path = get_split_file_path(root_path, &split_id);
let fd_semaphore_guard = Semaphore::acquire_owned(self.fd_semaphore.clone())
.await
.expect("fd_semaphore acquire failed. please report");
let file: File = tokio::task::spawn_blocking(move || std::fs::File::open(split_path))
.await
.map_err(|join_error| {
io::Error::other(format!("failed to open file: {join_error:?}"))
})??;
let split_file = SplitFile(Arc::new(SplitFileInner {
num_bytes,
file,
_fd_semaphore_guard: fd_semaphore_guard,
}));
self.put_split_file(split_id, split_file.clone());
Ok(split_file)
}
}
impl SplitFile {
pub async fn get_range(&self, range: Range<usize>) -> io::Result<OwnedBytes> {
use std::os::unix::fs::FileExt;View on GitHub (pinned to a39730c5cd)
Solutions
- Check whether the searcher node was shutting down while splits were still being opened
- Inspect logs for the component closing the fd semaphore early
- Report the issue to Quickwit maintainers with logs, as the message requests
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at quickwit/quickwit-storage/src/file_descriptor_cache.rs:137 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of quickwit-oss/quickwit@a39730c5cd (2026-09-08).
Data as JSON: /api/errors/a9dd69939efcc966.
Report an issue: GitHub.