influxdata/influxdb · critical · CatalogError
object store error
Error message
object store error: {0:?} What it means
CatalogError::ObjectStore wraps an ObjectStoreCatalogError raised while reading or writing catalog data through the underlying object store (in-memory, file, or S3-compatible backend). The library throws it whenever catalog persistence I/O fails, and the message renders the wrapped error with Debug formatting ({0:?}) so nested causes are visible. It indicates a storage-layer problem, not a problem with the catalog contents themselves.
Solutions
- Check object-store configuration (endpoint, bucket, credentials) and fix the underlying ObjectStoreCatalogError shown by the Debug output
- Test connectivity to the store (aws s3 ls or equivalent) from the same host
- Verify the store backend is healthy and has free space/quota
- Retry after transient network issues; the catalog write path is transactional
Example fix
// before
let store = AmazonS3Builder::new("wrong-bucket").build()?;
// after
let store = AmazonS3Builder::from_env().with_bucket_name("my-catalog-bucket").build()?; Defensive patterns
Strategy: retry
Validate before calling
// Rust: verify store reachability before catalog ops let store = ObjectStoreBuilder::build()?; store.list(None).limit(1).next().await.transpose()?;
Try / catch
match result {
Err(CatalogError::ObjectStore(e)) => {
tracing::error!(error = ?e, "catalog object store I/O failed");
// retry with backoff if transient
}
Err(e) => return Err(e.into()),
Ok(v) => v,
} Prevention
- Validate object-store env vars/credentials at startup
- Set up store health checks and alerts
- Keep ample disk/quota headroom
- Use retry with exponential backoff for transient store errors
When it happens
Trigger: Any catalog read/write that goes through ObjectStore: loading the catalog at startup, persisting a new catalog batch/checkpoint, compaction or snapshot upload; the wrapped store returns an I/O error, permission error, throttling, or a connection failure.
Common situations: Misconfigured S3 credentials or bucket name; network outage or S3 throttling (503 SlowDown); a disk full or permission-denied on a file-backed store; bucket deleted or region changed under a running server.
Related errors
- failed to load restore source
- Object store operation failed
- catalog update error
- error from persister
- Failed to delete table index snapshot from object store
AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19).
Data as JSON: /api/errors/f8fdbc8c3de243df.
Report an issue: GitHub.
Appendix: source
Thrown at influxdb3_catalog/src/error.rs:44
}
impl Display for TruncatedTableName {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.inner())
}
}
use crate::{
channel::SubscriptionError, format::FeatureLevel, format::FormatError,
log::versions::v4::StorageMode, object_store::ObjectStoreCatalogError,
};
#[derive(Debug, thiserror::Error)]
pub enum CatalogError {
#[error(transparent)]
Enterprise(#[from] EnterpriseCatalogError),
#[error("object store error: {0:?}")]
ObjectStore(#[from] ObjectStoreCatalogError),
#[error("catalog format error: {0}")]
Format(#[from] FormatError),
#[error("attempted to create a resource that already exists")]
AlreadyExists,
#[error("the requested resource was not found: {0}")]
NotFound(String),
#[error("attempted to modify resource that was already deleted: {0}")]
AlreadyDeleted(String),
/// Request is idempotent: no catalog state would change.
#[error("no catalog changes to apply: {details}")]
NoCatalogChange { details: String },
View on GitHub (pinned to 06200ef96b)