{"record":{"id":"d27b3e0a7b877a79","repo":"databendlabs/databend","slug":"e-d27b3e","errorCode":null,"errorMessage":"{e}","messagePattern":"\\{e\\}","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/meta/binaries/meta/entry.rs","lineNumber":450,"sourceCode":"        (\"cluster_name\", raft_config.cluster_name.as_str()),\n        (\"node_id\", &raft_config.id.to_string()),\n        (\"cluster_id\", raft_config.cluster_name.as_str()),\n    ]\n    .into_iter()\n    .map(|(k, v)| (k.to_string(), v.to_string()))\n    .collect();\n\n    GlobalInstance::init_production();\n    GlobalLogger::init(&app_name, log_config, log_labels);\n\n    if log_config.history.on {\n        GlobalIORuntime::init(num_cpus::get())?;\n\n        let params = log_config.history.storage_params.as_ref().ok_or_else(|| {\n            anyhow::anyhow!(\"Log history is enabled but storage_params is not set\")\n        })?;\n\n        let remote_log_op = init_operator(params).map_err(|e| anyhow::anyhow!(e))?;\n        GlobalLogger::instance().set_operator(remote_log_op).await;\n    }\n\n    Ok(())\n}\n\nfn pretty<T>(v: &T) -> Result<String, serde_json::Error>\nwhere T: serde::Serialize {\n    serde_json::to_string_pretty(v)\n}\n","sourceCodeStart":432,"sourceCodeEnd":461,"githubUrl":"https://github.com/databendlabs/databend/blob/288d84d76e20a2f8f7173bda9691eb6ece301aa9/src/meta/binaries/meta/entry.rs#L432-L461","documentation":"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}'.","triggerScenarios":"init_operator(params) fails while initializing remote log storage during metasrv startup: invalid bucket, wrong credentials, unreachable endpoint, or malformed storage_params.","commonSituations":"Misconfigured S3 endpoint/keys in log.history.storage_params; network/firewall blocking storage from the meta node; unsupported storage type string.","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"],"exampleFix":"// before\n[log.history.storage_params]\ntype = \"s3\"\nendpoint_url = \"http://wrong-host:9000\"\n// after\n[log.history.storage_params]\ntype = \"s3\"\nendpoint_url = \"http://minio:9000\"\nbucket = \"databend-meta\"\naccess_key_id = \"...\"\nsecret_access_key = \"...\"","handlingStrategy":"try-catch","validationCode":"// pre-check storage reachability before starting metasrv\ncurl -s --max-time 5 \"$S3_ENDPOINT\" || echo 'storage endpoint unreachable'","typeGuard":null,"tryCatchPattern":"match init_operator(&params) {\n    Ok(op) => GlobalLogger::instance().set_operator(op).await,\n    Err(e) => { log::error!(\"init remote log operator failed: {}\", e); std::process::exit(1); }\n}","preventionTips":["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"],"tags":["storage","opendal","startup"],"backgroundTag":"http-request-failed","analyzedSha":"288d84d76e20a2f8f7173bda9691eb6ece301aa9","analyzedAt":"2026-09-11T11:29:36.208Z","contentChangedAt":"2026-09-11T11:29:36.208Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}