databendlabs/databend · error
{e}
Error message
{e} What it means
After determining log history storage_params, init_logging_system calls init_operator to build an OpenDAL operator for the remote log storage. Any operator construction failure (bad endpoint/credentials/unreachable storage) is wrapped with anyhow::anyhow! and surfaced with the underlying message as '{e}'.
Solutions
- Read the wrapped '{e}' message for the underlying OpenDAL cause and fix the storage_params values (endpoint, bucket, credentials)
- Verify network reachability and credentials from the meta node to the storage backend
- Validate storage_params locally with a quick openald/operator test before restarting metasrv
Example fix
// before [log.history.storage_params] type = "s3" endpoint_url = "http://wrong-host:9000" // after [log.history.storage_params] type = "s3" endpoint_url = "http://minio:9000" bucket = "databend-meta" access_key_id = "..." secret_access_key = "..."
Defensive patterns
Strategy: try-catch
Validate before calling
// pre-check storage reachability before starting metasrv curl -s --max-time 5 "$S3_ENDPOINT" || echo 'storage endpoint unreachable'
Try / catch
match init_operator(¶ms) {
Ok(op) => GlobalLogger::instance().set_operator(op).await,
Err(e) => { log::error!("init remote log operator failed: {}", e); std::process::exit(1); }
} Prevention
- Validate storage credentials and endpoints with a minimal OpenDAL client test pre-deploy
- Use secrets management to avoid expired/typo'd keys
- Monitor storage endpoint availability from meta nodes
When it happens
Trigger: init_operator(params) fails while initializing remote log storage during metasrv startup: invalid bucket, wrong credentials, unreachable endpoint, or malformed storage_params.
Common situations: Misconfigured S3 endpoint/keys in log.history.storage_params; network/firewall blocking storage from the meta node; unsupported storage type string.
Understand the failure class
Background: 'Something went wrong' / 'Request failed (500)' / 'HTTP error! status: 404' — what failed HTTP requests actually mean and how to find the real cause — this error's family across 28 libraries.
Related errors
- bandsave load databend meta data failed
- Failed to get or create operator
- Unsupported storage type
- unsupported iceberg scheme
- S3 params must remain S3
AI-assisted analysis of databendlabs/databend@288d84d76e (2026-09-11).
Data as JSON: /api/errors/d27b3e0a7b877a79.
Report an issue: GitHub.
Appendix: source
Thrown at src/meta/binaries/meta/entry.rs:450
("cluster_name", raft_config.cluster_name.as_str()),
("node_id", &raft_config.id.to_string()),
("cluster_id", raft_config.cluster_name.as_str()),
]
.into_iter()
.map(|(k, v)| (k.to_string(), v.to_string()))
.collect();
GlobalInstance::init_production();
GlobalLogger::init(&app_name, log_config, log_labels);
if log_config.history.on {
GlobalIORuntime::init(num_cpus::get())?;
let params = log_config.history.storage_params.as_ref().ok_or_else(|| {
anyhow::anyhow!("Log history is enabled but storage_params is not set")
})?;
let remote_log_op = init_operator(params).map_err(|e| anyhow::anyhow!(e))?;
GlobalLogger::instance().set_operator(remote_log_op).await;
}
Ok(())
}
fn pretty<T>(v: &T) -> Result<String, serde_json::Error>
where T: serde::Serialize {
serde_json::to_string_pretty(v)
}
View on GitHub (pinned to 288d84d76e)