risingwavelabs/risingwave · error · ConnectorError

Unsupported scheme: {}

Error message

Unsupported scheme: {}

What it means

Raised in `IcebergConnection::validate_connection` when the scheme of `warehouse.path` is not one of the supported object-store schemes: s3/s3a (S3), gs/gcs (GCS), azblob (Azure Blob). After parsing the warehouse URL, the validator dispatches on the scheme and bails for anything unrecognized.

Source

Thrown at src/connector/src/connector_common/connection.rs:260

                    op.check().await?;
                }
                "azblob" => {
                    let mut builder = Azblob::default();
                    if let Some(account_name) = &common.azblob_account_name {
                        builder = builder.account_name(account_name);
                    }
                    if let Some(azblob_account_key) = &common.azblob_account_key {
                        builder = builder.account_key(azblob_account_key);
                    }
                    if let Some(azblob_endpoint_url) = &common.azblob_endpoint_url {
                        builder = builder.endpoint(azblob_endpoint_url);
                    }
                    builder = builder.root(root.as_str()).container(bucket.as_str());
                    let op = Operator::new(builder)?;
                    op.check().await?;
                }
                _ => {
                    bail!("Unsupported scheme: {}", scheme);
                }
            }
        }

        if env_var_is_true(DISABLE_DEFAULT_CREDENTIAL)
            && matches!(common.enable_config_load, Some(true))
        {
            bail!("`enable_config_load` can't be enabled in this environment");
        }

        if common.hosted_catalog.unwrap_or(false) {
            // If `hosted_catalog` is set, we don't need to test the catalog, but just ensure no catalog fields are set.
            if common.catalog_type.is_some() {
                bail!("`catalog.type` must not be set when `hosted_catalog` is set");
            }
            if common.catalog_uri.is_some() {
                bail!("`catalog.uri` must not be set when `hosted_catalog` is set");
            }

View on GitHub (pinned to 6469eb736d)

Solutions

  1. Rewrite `warehouse.path` with a supported scheme: `s3://bucket/root`, `s3a://bucket/root`, `gs://bucket/root`, `gcs://bucket/root`, or `azblob://container/root`.
  2. For Azure, use the `azblob://` scheme form (container is the host) rather than `abfss://`/`wasb://`.
  3. Remove any leading `https://` or filesystem path and express the warehouse as an object-store URI.

Example fix

// before
warehouse.path='abfss://mycontainer@account.dfs.core.windows.net/warehouse'
// after
warehouse.path='azblob://mycontainer/warehouse'
Defensive patterns

Strategy: validation

Validate before calling

const OK: [&str;5] = ["s3","s3a","gs","gcs","azblob"];
let scheme = warehouse_path.split("://").next().unwrap_or("");
if !OK.contains(&scheme) { return Err(format!("unsupported warehouse scheme: {}", scheme)); }

Type guard

fn supported_warehouse(p: &str) -> bool {
    ["s3://","s3a://","gs://","gcs://","azblob://"].iter().any(|pre| p.starts_with(pre))
}

Try / catch

if let Err(e) = conn.validate_connection().await {
    if e.to_string().starts_with("Unsupported scheme:") {
        return Err(UserError::UnsupportedWarehouseScheme(e.to_string()));
    }
    return Err(e.into());
}

Prevention

When it happens

Trigger: Setting `warehouse.path` to a URL whose scheme is outside {s3, s3a, gs, gcs, azblob} — e.g. `wasb://`, `abfs://`, `file:///`, `oss://`, or a malformed URL whose host component was mis-parsed as a scheme.

Common situations: Using Azure Data Lake Gen2 URIs (`abfss://`) or OSS URIs which the validator does not accept; using a local filesystem path; typos like `s3s://`; pasting a `https://` endpoint as the warehouse path.

Understand the failure class

Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.

Related errors


AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11). Data as JSON: /api/errors/ebe0ea93fb89e7c5. Report an issue: GitHub.