apache/seatunnel · error · IllegalArgumentException

Debezium log mining strategy must be set to…

Error message

Debezium log mining strategy must be set to redo_log_catalog when schema changes are enabled

What it means

Thrown in OracleSourceConfigFactory.create when schema-change events are enabled but the Debezium 'log.mining.strategy' property is left at the default (not redo_log_catalog). Capturing DDL changes requires redo_log_catalog mining; the incompatible default strategy cannot emit schema changes, so startup fails fast with this explicit error.

Solutions

  1. Add debezium.properties { debezium.log.mining.strategy = redo_log_catalog }.
  2. If redo_log_catalog is too expensive, disable schema changes (schema-changes.enabled = false).
  3. Verify no other key overrides log.mining.strategy back to online_catalog after the check.

Example fix

// before
schema-changes.enabled = true
// after
schema-changes.enabled = true
debezium.properties { "log.mining.strategy" = "redo_log_catalog" }
Defensive patterns

Strategy: validation

Validate before calling

boolean schemaChanges = true; // as configured
String strategy = dbzProps.getProperty("debezium.log.mining.strategy");
if (schemaChanges && !"redo_log_catalog".equals(strategy)) {
    throw new IllegalArgumentException("set debezium.log.mining.strategy=redo_log_catalog");
}

Prevention

When it happens

Trigger: Setting schema-changes.enabled=true (or passing debezium properties enabling schema changes) while 'debezium.log.mining.strategy' is absent or set to 'online_catalog'; create() detects the combination and throws before building OracleSourceConfig.

Common situations: Users enable schema evolution for pipelines whose tables are being altered online, but leave the Debezium mining strategy at its default; happens especially when copying sample configs that omit log.mining.strategy.

Understand the failure class

Background: Conflicting config options: "cannot be used together" — configuration validation errors across open-source libraries — this error's family across 162 libraries.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/5b607c9fa498d314. Report an issue: GitHub.

Appendix: source

Thrown at seatunnel-connectors-v2/connector-cdc/connector-cdc-oracle/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/oracle/config/OracleSourceConfigFactory.java:152

                                        }
                                        if (splits.length == 3) {
                                            return String.join(".", splits[1], splits[2]);
                                        }
                                        throw new IllegalArgumentException(
                                                "Invalid table name: " + tableStr);
                                    })
                            .collect(Collectors.joining(",")));
        }

        // override the user-defined debezium properties
        if (dbzProperties != null) {
            String debeziumSchemaChanges =
                    dbzProperties.getProperty(
                            SCHEMA_CHANGE_KEY, String.valueOf(schemaChangeEnabled));
            String debeziumLogMiningStrategy = dbzProperties.getProperty(LOG_MINING_STRATEGY_KEY);
            if (Boolean.parseBoolean(debeziumSchemaChanges)
                    && LOG_MINING_STRATEGY_DEFAULT.equals(debeziumLogMiningStrategy)) {
                throw new IllegalArgumentException(
                        "Debezium log mining strategy must be set to redo_log_catalog when schema changes are enabled");
            }
            props.putAll(dbzProperties);
        }

        OracleSourceConfig config =
                new OracleSourceConfig(
                        useSelectCount,
                        skipAnalyze,
                        startupConfig,
                        stopConfig,
                        databaseList,
                        tableList,
                        splitSize,
                        splitColumn,
                        distributionFactorUpper,
                        distributionFactorLower,
                        sampleShardingThreshold,

View on GitHub (pinned to cf67b549a7)