{"record":{"id":"016a1949486df855","repo":"risingwavelabs/risingwave","slug":"azblob-endpoint-not-found-from-environment-variabl","errorCode":null,"errorMessage":"AZBLOB_ENDPOINT not found from environment variables","messagePattern":"AZBLOB_ENDPOINT not found from environment variables","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"src/object_store/src/object/opendal_engine/azblob.rs","lineNumber":39,"sourceCode":"\nuse super::{MediaType, OpendalObjectStore, new_operator};\nuse crate::object::ObjectResult;\nuse crate::object::object_metrics::ObjectStoreMetrics;\n\nconst AZBLOB_ENDPOINT: &str = \"AZBLOB_ENDPOINT\";\nimpl OpendalObjectStore {\n    /// create opendal azblob engine.\n    pub fn new_azblob_engine(\n        container_name: String,\n        root: String,\n        config: Arc<ObjectStoreConfig>,\n        metrics: Arc<ObjectStoreMetrics>,\n    ) -> ObjectResult<Self> {\n        // Create azblob backend builder.\n        let mut builder = Azblob::default().root(&root).container(&container_name);\n\n        let endpoint = std::env::var(AZBLOB_ENDPOINT)\n            .unwrap_or_else(|_| panic!(\"AZBLOB_ENDPOINT not found from environment variables\"));\n\n        builder = builder.endpoint(&endpoint);\n\n        let op = new_operator(\n            &config,\n            Operator::new(builder)?.layer(LoggingLayer::default()),\n        );\n\n        Ok(Self {\n            op,\n            media_type: MediaType::Azblob,\n            config,\n            metrics,\n        })\n    }\n}\n","sourceCodeStart":21,"sourceCodeEnd":56,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/object_store/src/object/opendal_engine/azblob.rs#L21-L56","documentation":"new_azblob_engine reads the Azure Blob endpoint from the AZBLOB_ENDPOINT environment variable and panics if it is unset, because the OpenDAL azblob builder cannot construct a client without an endpoint. The process aborts with this message at store creation time.","triggerScenarios":"Configuring RisingWave with an azblob:// remote object store while AZBLOB_ENDPOINT is not exported in the environment of the risingwave process.","commonSituations":"Missing env var in systemd/docker/Kubernetes deployments, running risedev without the azblob fixture env, or typos in the variable name.","solutions":["Export AZBLOB_ENDPOINT with the blob service URL (e.g. https://<account>.blob.core.windows.net) before starting RisingWave","Add the variable to your deployment manifest / risedev profile env section","Verify with `env | grep AZBLOB` inside the container/host the process runs in","Also set the related AZBLOB credentials (account name/key) expected by the azblob builder"],"exampleFix":"// before: process-wide panic on missing env\nlet endpoint = std::env::var(AZBLOB_ENDPOINT)\n    .unwrap_or_else(|_| panic!(\"AZBLOB_ENDPOINT not found from environment variables\"));\n// after: fail with a proper ObjectError instead\nlet endpoint = std::env::var(AZBLOB_ENDPOINT).map_err(|_| {\n    ObjectError::internal(\"AZBLOB_ENDPOINT not found from environment variables\")\n})?;","handlingStrategy":"validation","validationCode":"// Fail fast with a clear message before starting RisingWave\nif std::env::var(\"AZBLOB_ENDPOINT\").is_err() {\n    eprintln!(\"AZBLOB_ENDPOINT must be set (e.g. https://<account>.blob.core.windows.net)\");\n    std::process::exit(1);\n}","typeGuard":null,"tryCatchPattern":"// The panic aborts the process; guard it before constructing the store.\n// Run store construction in a monitored supervisor so the exit is surfaced clearly.\nmatch std::panic::catch_unwind(|| build_store_blocking()) {\n    Ok(store) => store,\n    Err(_) => { eprintln!(\"azblob engine init failed: check AZBLOB_ENDPOINT/AZBLOB_* env vars\"); std::process::exit(1); }\n}","preventionTips":["Export AZBLOB_ENDPOINT (and AZBLOB_ACCOUNT_NAME/AZBLOB_ACCOUNT_KEY) in every environment that runs RisingWave","Add an env-var preflight check to your deployment entrypoint script","Use a config management tool to keep env vars consistent across hosts"],"tags":["rust","azure-blob","opendal","env-var","panic"],"backgroundTag":"missing-env-var","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}