risingwavelabs/risingwave · error · SinkError::BigQuery

license feature check failed (BigQuerySink not available): w

Error message

license feature check failed (BigQuerySink not available): wrapped error from risingwave_common::license::Feature::check_available

What it means

The BigQuery sink's `validate` calls `risingwave_common::license::Feature::BigQuerySink.check_available()`, which fails when the current license does not include the BigQuery sink feature. The underlying error is wrapped with `anyhow`, producing this message. BigQuery sink is an enterprise-licensed feature, so unlicensed deployments cannot use it.

Source

Thrown at src/connector/src/sink/big_query.rs:555

    async fn new_log_sinker(&self, _writer_param: SinkWriterParam) -> Result<Self::LogSinker> {
        let (writer, resp_stream) = BigQuerySinkWriter::new(
            self.config.clone(),
            self.schema.clone(),
            self.pk_indices.clone(),
            self.is_append_only,
        )
        .await?;
        Ok(BigQueryLogSinker::new(
            writer,
            resp_stream,
            BIGQUERY_SEND_FUTURE_BUFFER_MAX_SIZE,
        ))
    }

    async fn validate(&self) -> Result<()> {
        risingwave_common::license::Feature::BigQuerySink
            .check_available()
            .map_err(|e| anyhow::anyhow!(e))?;
        if !self.is_append_only && self.pk_indices.is_empty() {
            return Err(SinkError::Config(anyhow!(
                "Primary key not defined for upsert bigquery sink (please define in `primary_key` field)"
            )));
        }
        let client = self
            .config
            .common
            .build_client(&self.config.aws_auth_props)
            .await?;
        let BigQueryCommon {
            project: project_id,
            dataset: dataset_id,
            table: table_id,
            ..
        } = &self.config.common;

        if self.config.common.auto_create {

View on GitHub (pinned to 6469eb736d)

Solutions

  1. Apply a RisingWave license key that includes the BigQuery sink feature (ALTER SYSTEM SET license_key = '...').
  2. Check the current license with SHOW LICENSE / the license info functions to verify feature availability and expiry.
  3. Contact RisingWave sales/support to obtain or upgrade the license covering BigQuerySink.
  4. Use a differently licensed sink (e.g. one available in your tier) if a license cannot be obtained.

Example fix

-- before: no license key set, sink creation fails
CREATE SINK bq_sink FROM mv WITH (...) TYPE bigquery;

-- after: apply license first
ALTER SYSTEM SET license_key = '<your-license-key>';
CREATE SINK bq_sink FROM mv WITH (...) TYPE bigquery;
Defensive patterns

Strategy: validation

Validate before calling

-- Verify the BigQuery sink feature is licensed before creating the sink:
SHOW PARAMETERS license_key;
SELECT * FROM rw_catalog.rw_license_info; -- check expiry/features if exposed
-- Or attempt feature check:
-- feature_available := license includes BigQuerySink

Try / catch

// SQL-level: catch feature failure on sink creation
-- In driver code:
try {
  await client.query('CREATE SINK ... TYPE bigquery ...');
} catch (e) {
  if (e.message.includes('license feature check failed')) {
    // apply/upgrade license or fall back to another sink type
  }
  throw e;
}

Prevention

When it happens

Trigger: Creating a BigQuery sink on a RisingWave deployment whose license (or lack thereof) does not grant the BigQuerySink feature — e.g. free tier without a license key, or an expired/feature-limited license.

Common situations: Open-source or free-tier deployments following BigQuery sink docs without applying an enterprise license key; licenses that expired or were downgraded.

Related errors


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