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
- Rewrite `warehouse.path` with a supported scheme: `s3://bucket/root`, `s3a://bucket/root`, `gs://bucket/root`, `gcs://bucket/root`, or `azblob://container/root`.
- For Azure, use the `azblob://` scheme form (container is the host) rather than `abfss://`/`wasb://`.
- 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
- Map cloud storage URIs to supported schemes before configuring (abfss→azblob form, oss→s3-compatible endpoint)
- Never use file:// or https:// as warehouse.path
- Test the warehouse URL parses with the expected scheme/bucket shape
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
- `warehouse.path` must be set
- `catalog.type` must not be set when `hosted_catalog` is set
- `catalog.uri` must not be set when `hosted_catalog` is set
- `catalog.name` must not be set when `hosted_catalog` is set
- `catalog.jdbc.user` must not be set when `hosted_catalog` is
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/ebe0ea93fb89e7c5.
Report an issue: GitHub.