quickwit-oss/quickwit · error
`{}` not found in storage
Error message
`{}` not found in storage What it means
`check_connectivity` on the bundle storage verifies that the underlying bundle file actually exists in the backing storage before further operations. If `storage.exists(bundle_filepath)` returns false (or errors, mapped to false), the check bails with the display path in the message. It is an existence precondition, not a permission or read failure.
Source
Thrown at quickwit/quickwit-storage/src/bundle_storage.rs:478
self.files.get(path).cloned()
}
/// Returns whether the bundle contains a file at the given path.
pub fn exists(&self, path: &Path) -> bool {
self.files.contains_key(path)
}
}
#[async_trait]
impl Storage for BundleStorage {
async fn check_connectivity(&self) -> anyhow::Result<()> {
if !self
.storage
.exists(&self.bundle_filepath)
.await
.unwrap_or(false)
{
bail!("`{}` not found in storage", self.bundle_filepath.display())
}
Ok(())
}
async fn put(
&self,
path: &Path,
_payload: Box<dyn crate::PutPayload>,
) -> crate::StorageResult<()> {
Err(unsupported_operation(&[path]))
}
async fn copy_to(
&self,
path: &Path,
output: &mut dyn SendableAsync,
) -> crate::StorageResult<()> {
let file_len = self.file_num_bytes(path).await? as usize;View on GitHub (pinned to a39730c5cd)
Solutions
- Verify the storage URI/bucket and prefix in the index config actually contain the bundle file.
- Check whether the split was deleted (retention policy, GC) and remove stale references or restore the object.
- Confirm credentials/permissions so `exists` isn't failing silently (exists errors are swallowed to false here).
Example fix
// before
let storage = StorageResolver::uri("s3://wrong-bucket/")?;
// after
let storage = StorageResolver::uri("s3://quickwit-bucket/indexes/my-index/")?; Defensive patterns
Strategy: validation
Validate before calling
if !storage.exists(&bundle_filepath).await? {
return Err(anyhow!("bundle {} missing; fix storage uri or restore object", bundle_filepath.display()));
} Prevention
- Verify storage URI/prefix before deployment.
- Ensure retention/GC does not delete splits still referenced by live indexes.
When it happens
Trigger: Any operation that constructs a BundleStorage over a `.bundle` filepath not present in the configured storage (wrong index/uri, deleted split, bucket misconfiguration) and then runs connectivity checks.
Common situations: Pointing quickwit at a wrong S3 bucket/prefix; split deleted by retention while still referenced; typo in the storage URI; object removed by a concurrent process.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- missing file `{}` in split bundle
- missing file `{}`
- file `{}` is not a regular file, cannot determine its size
- failed to find dest_path {:?}
- `append_records` should be called with `position_opt: None`
AI-assisted analysis of quickwit-oss/quickwit@a39730c5cd (2026-09-08).
Data as JSON: /api/errors/6b7cae7ee1cb9856.
Report an issue: GitHub.