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

  1. Check object-store configuration (endpoint, bucket, credentials) and fix the underlying ObjectStoreCatalogError shown by the Debug output
  2. Test connectivity to the store (aws s3 ls or equivalent) from the same host
  3. Verify the store backend is healthy and has free space/quota
  4. 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

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


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)