risingwavelabs/risingwave · error

legacy s3 connector is fully deprecated since v2.4.0…

Error message

legacy s3 connector is fully deprecated since v2.4.0, please DROP and recreate the s3 source.
executor: {:?}

What it means

The legacy filesystem-based S3 connector (`connector = 's3'` without `s3_v2`) was removed; since v2.4.0 creating its stream executor bails with this message telling the user to DROP and recreate the source. It exists to force migration to the opendal-based `s3_v2` connector.

Solutions

  1. DROP the legacy s3 source and recreate it with `connector = 's3_v2'` (the executor message says DROP and recreate).
  2. Migrate source options to the s3_v2/opendal schema (e.g. `s3.region.name`, `s3.credentials.access`).
  3. Recreate downstream MVs/sinks that depend on the source after recreating it.
  4. Check `SHOW SOURCES` after upgrade to find sources still using `s3`.

Example fix

// before
CREATE SOURCE s WITH (connector = 's3', ...);
// after
CREATE SOURCE s WITH (connector = 's3_v2', s3.region.name = 'us-east-1', ...);
Defensive patterns

Strategy: validation

Validate before calling

-- before creating/after upgrading, check connector type
SHOW SOURCES; -- recreate any source with connector = 's3' using 's3_v2'

Prevention

When it happens

Trigger: Starting a stream fragment whose source still references the deprecated `s3` (or legacy fs) connector — typically a source created before v2.0/v2.4.0 that survived an upgrade and is now being recovered/rebuilt.

Common situations: Upgrading a RisingWave cluster from an older version with existing s3 sources; a `CREATE SOURCE` copied from pre-v2.0 docs using `connector='s3'`.

Understand the failure class

Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.

Related errors


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

Appendix: source

Thrown at src/stream/src/from_proto/source/trad_source.rs:218

                let is_legacy_fs_connector = source.with_properties.is_legacy_fs_connector();
                let is_fs_v2_connector = source.with_properties.is_new_fs_connector();
                let is_s3_connector = source
                    .with_properties
                    .get_connector()
                    .map(|c| {
                        c.eq_ignore_ascii_case(risingwave_connector::source::OPENDAL_S3_CONNECTOR)
                    })
                    .unwrap_or(false);
                let is_gcs_connector = source
                    .with_properties
                    .get_connector()
                    .map(|c| c.eq_ignore_ascii_case(risingwave_connector::source::GCS_CONNECTOR))
                    .unwrap_or(false);

                if is_legacy_fs_connector {
                    // Changed to default since v2.0 https://github.com/risingwavelabs/risingwave/pull/17963
                    bail!(
                        "legacy s3 connector is fully deprecated since v2.4.0, please DROP and recreate the s3 source.\nexecutor: {:?}",
                        params
                    );
                } else if is_full_reload_refresh && is_s3_connector {
                    BatchOpendalFsListExecutor::<_, OpendalS3>::new(
                        params.actor_context.clone(),
                        stream_source_core,
                        params.executor_stats.clone(),
                        barrier_receiver,
                        system_params,
                        source.rate_limit,
                        params.local_barrier_manager.clone(),
                        associated_table_id,
                    )
                    .boxed()
                } else if is_full_reload_refresh && is_gcs_connector {
                    BatchOpendalFsListExecutor::<_, OpendalGcs>::new(
                        params.actor_context.clone(),

View on GitHub (pinned to 6469eb736d)