risingwavelabs/risingwave · error · FeatureNotAvailable
feature {feature:?} is not available based on your license
Error message
feature {feature:?} is not available based on your license
Hint: You may want to set a license key with `ALTER SYSTEM SET license_key = '...';` command. For more information, visit https://go.risingwave.com/premium. What it means
When a file sink targets the Snowflake engine type, the connector checks whether the `SnowflakeSink` feature is licensed and available. If the deployment lacks a valid license key covering this premium feature, `check_available()` fails and the error is surfaced (wrapped with a hint to set a license key via `ALTER SYSTEM SET license_key = '...';`). This is RisingWave's license gating, not a configuration mistake in the sink itself.
Source
Thrown at src/connector/src/sink/file_sink/opendal_sink.rs:150
crate::sink::validate_sink_unknown_fields(&self.unknown_fields)
}
/// A file is committed only once the batching strategy is met, so an untruncated barrier
/// would block the checkpoint forever on the non-decoupled in-memory log store.
fn is_sink_decouple(user_specified: &SinkDecouple) -> Result<bool> {
match user_specified {
SinkDecouple::Default | SinkDecouple::Enable => Ok(true),
SinkDecouple::Disable => Err(SinkError::Config(anyhow!(
"File sink can only be created with sink_decouple enabled. Please run `set sink_decouple = true` first."
))),
}
}
async fn validate(&self) -> Result<()> {
if matches!(self.engine_type, EngineType::Snowflake) {
risingwave_common::license::Feature::SnowflakeSink
.check_available()
.map_err(|e| anyhow::anyhow!(e))?;
}
if !self.is_append_only {
return Err(SinkError::Config(anyhow!(
"File sink only supports append-only mode at present. \
Please change the query to append-only, and specify it \
explicitly after the `FORMAT ... ENCODE ...` statement. \
For example, `FORMAT xxx ENCODE xxx(force_append_only='true')`"
)));
}
if self.format_desc.encode != SinkEncode::Parquet
&& self.format_desc.encode != SinkEncode::Json
{
return Err(SinkError::Config(anyhow!(
"File sink only supports `PARQUET` and `JSON` encode at present."
)));
}
View on GitHub (pinned to 6469eb736d)
Solutions
- Set a valid license key: `ALTER SYSTEM SET license_key = '...';`
- Verify the license covers the Snowflake sink feature for your edition
- If Snowflake output is not actually needed, create the sink without the Snowflake engine type (e.g. write files to S3/GCS directly)
Example fix
-- before CREATE SINK s FROM mv WITH (connector = 'snowflake', ...); -- after ALTER SYSTEM SET license_key = 'rw-...'; CREATE SINK s FROM mv WITH (connector = 'snowflake', ...);
Defensive patterns
Strategy: validation
Validate before calling
-- verify license before creating Snowflake sink ALTER SYSTEM SET license_key = '...'; SHOW PARAMETERS; -- confirm license applied SELECT * FROM rw_catalog.rw_license; -- check feature availability if exposed
Try / catch
match err.message().contains("not available based on your license") {
true => eprintln!("Set a license key first: ALTER SYSTEM SET license_key = '...';"),
false => return Err(err),
} Prevention
- Set a valid license key before attempting premium features like Snowflake sink
- Track license expiry and renew proactively
- Confirm feature edition coverage with your RisingWave account before designing pipelines around premium sinks
When it happens
Trigger: Creating a file sink with engine_type = Snowflake (e.g. `type = 'snowflake'` / snowflake engine) on a cluster without an applicable license key or on an edition that does not include the Snowflake sink feature.
Common situations: Running community/open-source RisingWave and attempting a Snowflake sink; license key expired or not yet set; evaluating premium features without enabling the trial license.
Related errors
- license feature check failed (BigQuerySink not available): w
- feature {feature:?} is not available based on your license
- license feature check failed (ClickHouseSharedEngine not ava
- Snowflake catalog only supports iceberg sources
- intermediate.table.name is required for non-append-only sink
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/8e20b03233ad31f8.
Report an issue: GitHub.