influxdata/influxdb · error · CatalogError
missing object store for restore operation
Error message
missing object store for restore operation
What it means
Thrown when a restore operation is invoked without an object store configured. Restores read snapshot/backup data from object storage, so a missing ObjectStore reference makes the operation impossible; the API requires it explicitly.
Solutions
- Provide the object store configuration (bucket, endpoint, credentials) to the restore builder before invoking restore.
- Set the required environment variables / config fields for the object store backend.
- Use the same object store the backup was taken from.
- If the restore API offers a local-path alternative, switch to the file-based restore flow.
Example fix
// before
let catalog = Catalog::restore(backup_id).await?;
// after
let store = get_object_store_from_config(&cfg)?; // panics earlier if unconfigured
let catalog = Catalog::builder()
.object_store(store)
.restore(backup_id).await?; Defensive patterns
Strategy: validation
Validate before calling
let store = object_store_config
.as_ref()
.ok_or("object store must be configured for restore")?; Try / catch
match result {
Err(CatalogError::MissingObjectStoreForRestore) => {
log::error!("restore called without object store; configure bucket/credentials");
}
other => other?,
} Prevention
- Verify object-store config in the restore tool's preflight
- Keep backup and restore environments' storage config in sync
- Fail fast at startup when object-store env vars are absent
When it happens
Trigger: Calling the catalog/instance restore API on a builder or client that was never given an ObjectStore (e.g. built for local-only mode); restore invoked in an environment where object-store config was omitted.
Common situations: Disaster-recovery drill where the restore tool is instantiated without cloud credentials; config file lacking the object-store section; running restore on a node intended only for local operation.
Understand the failure class
Background: "X is required", "must be set", "cannot be empty": the missing-required-config error family, from Vertex AI project/location to WeChat keys — this error's family across 18 libraries.
Related errors
- failed to load restore source
- invalid restore path
- restore checkpoint not found at
- another process has written to the WAL ahead of this one
- Azure blob storage support not enabled, recompile with the…
AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19).
Data as JSON: /api/errors/0437c334701393e5.
Report an issue: GitHub.
Appendix: source
Thrown at influxdb3_catalog/src/error.rs:368
)]
RecordExceedsCommittedFeatureLevel {
record_id: u16,
committed: FeatureLevel,
},
#[error(
"this node's feature level (core={}, enterprise={}) is below the cluster's committed level (core={}, enterprise={}); upgrade required",
local.core,
local.enterprise,
committed.core,
committed.enterprise,
)]
NodeBelowCommittedFeatureLevel {
committed: FeatureLevel,
local: FeatureLevel,
},
#[error("missing object store for restore operation")]
MissingObjectStoreForRestore,
#[error(
"cannot remove node '{node_id}' because it is a member of query group '{query_group_name}' (id {query_group_id})"
)]
NodeInQueryGroup {
node_id: Arc<str>,
query_group_name: Arc<str>,
query_group_id: QueryGroupId,
},
#[error(
"cannot place node '{node_id}' in this query group because it already belongs to query group '{query_group_name}' (id {query_group_id})"
)]
NodeAlreadyInQueryGroup {
node_id: Arc<str>,
query_group_name: Arc<str>,
query_group_id: QueryGroupId,View on GitHub (pinned to 06200ef96b)