databendlabs/databend · critical
{e}
Error message
{e} What it means
The meta node binary's main loads its configuration via Config::load(true)? then try_into MetaConfig; a String-typed conversion error is converted into anyhow with the raw message {e}. The process exits non-zero because the loaded config cannot be interpreted as a valid MetaConfig.
Solutions
- Read the {e} message — it states exactly which config key/value failed conversion.
- Validate the config with databend-meta --cmd config or the config-check subcommand before launch.
- Update the config file to the current schema for your Databend version (check release notes for renames).
- Simplify to a minimal config and add fields back incrementally to isolate the offending key.
Example fix
// before (databend-meta.toml) log_dir = "/var/log/databend/meta" # removed key in new schema // after [log] dir = "/var/log/databend/meta"
Defensive patterns
Strategy: validation
Validate before calling
# Shell: validate meta config before starting the service databend-meta --config-file databend-meta.toml --cmd config | grep -i error && exit 1
Try / catch
// Rust: surface which config entry failed
let conf: MetaConfig = Config::load(true)?
.try_into()
.map_err(|e: String| { eprintln!("invalid meta config: {e}"); anyhow::anyhow!(e) })?; Prevention
- Run config validation in CI and before every restart
- Check release notes for config key renames when upgrading
- Never reuse a query-node config file for the meta service
When it happens
Trigger: Starting the meta service (databend-meta) with a config file / CLI / env combination that Config::load accepts but whose try_into::<MetaConfig> fails — e.g. invalid or mutually conflicting field values produced by the config loader's validation-as-string errors.
Common situations: Deprecated or renamed config keys in databend-meta.toml after an upgrade; wrong types (string where number expected); env var overrides producing invalid values; --config-file pointing at a query-node config by mistake.
Related errors
- Invalid config.rpc
- Unsupported format for
- Unsupported source type. Expected path, pandas.DataFrame…
- Access denied: is outside allowed directories
- rename_database: src (db) should exist
AI-assisted analysis of databendlabs/databend@288d84d76e (2026-09-11).
Data as JSON: /api/errors/3687bc3dd9350ce9.
Report an issue: GitHub.
Appendix: source
Thrown at src/meta/binaries/meta/ee_main.rs:31
// limitations under the License.
#![feature(stmt_expr_attributes)]
#![allow(clippy::collapsible_if, clippy::uninlined_format_args)]
mod entry;
use databend_common_base::mem_allocator::DefaultGlobalAllocator;
use databend_meta_cli_config::Config;
use databend_meta_cli_config::MetaConfig;
use databend_meta_runtime::DatabendRuntime;
#[global_allocator]
pub static GLOBAL_ALLOCATOR: DefaultGlobalAllocator = DefaultGlobalAllocator::create();
#[tokio::main(flavor = "multi_thread")]
async fn main() -> anyhow::Result<()> {
let conf: MetaConfig = Config::load(true)?
.try_into()
.map_err(|e: String| anyhow::anyhow!(e))?;
conf.service.validate()?;
entry::entry::<DatabendRuntime>(conf).await
}
View on GitHub (pinned to 288d84d76e)