{"record":{"id":"5b607c9fa498d314","repo":"apache/seatunnel","slug":"debezium-log-mining-strategy-must-be-set-to-redo-l","errorCode":null,"errorMessage":"Debezium log mining strategy must be set to redo_log_catalog when schema changes are enabled","messagePattern":"Debezium log mining strategy must be set to redo_log_catalog when schema changes are enabled","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-cdc/connector-cdc-oracle/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/oracle/config/OracleSourceConfigFactory.java","lineNumber":152,"sourceCode":"                                        }\n                                        if (splits.length == 3) {\n                                            return String.join(\".\", splits[1], splits[2]);\n                                        }\n                                        throw new IllegalArgumentException(\n                                                \"Invalid table name: \" + tableStr);\n                                    })\n                            .collect(Collectors.joining(\",\")));\n        }\n\n        // override the user-defined debezium properties\n        if (dbzProperties != null) {\n            String debeziumSchemaChanges =\n                    dbzProperties.getProperty(\n                            SCHEMA_CHANGE_KEY, String.valueOf(schemaChangeEnabled));\n            String debeziumLogMiningStrategy = dbzProperties.getProperty(LOG_MINING_STRATEGY_KEY);\n            if (Boolean.parseBoolean(debeziumSchemaChanges)\n                    && LOG_MINING_STRATEGY_DEFAULT.equals(debeziumLogMiningStrategy)) {\n                throw new IllegalArgumentException(\n                        \"Debezium log mining strategy must be set to redo_log_catalog when schema changes are enabled\");\n            }\n            props.putAll(dbzProperties);\n        }\n\n        OracleSourceConfig config =\n                new OracleSourceConfig(\n                        useSelectCount,\n                        skipAnalyze,\n                        startupConfig,\n                        stopConfig,\n                        databaseList,\n                        tableList,\n                        splitSize,\n                        splitColumn,\n                        distributionFactorUpper,\n                        distributionFactorLower,\n                        sampleShardingThreshold,","sourceCodeStart":134,"sourceCodeEnd":170,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-cdc/connector-cdc-oracle/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/oracle/config/OracleSourceConfigFactory.java#L134-L170","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Add debezium.properties { debezium.log.mining.strategy = redo_log_catalog }.","If redo_log_catalog is too expensive, disable schema changes (schema-changes.enabled = false).","Verify no other key overrides log.mining.strategy back to online_catalog after the check."],"exampleFix":"// before\nschema-changes.enabled = true\n// after\nschema-changes.enabled = true\ndebezium.properties { \"log.mining.strategy\" = \"redo_log_catalog\" }","handlingStrategy":"validation","validationCode":"boolean schemaChanges = true; // as configured\nString strategy = dbzProps.getProperty(\"debezium.log.mining.strategy\");\nif (schemaChanges && !\"redo_log_catalog\".equals(strategy)) {\n    throw new IllegalArgumentException(\"set debezium.log.mining.strategy=redo_log_catalog\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pair schema-changes.enabled=true with log.mining.strategy=redo_log_catalog in every Oracle CDC template.","Review merged debezium.properties for keys overriding the mining strategy."],"tags":["oracle-cdc","debezium","schema-change","log-mining"],"backgroundTag":"conflicting-config-options","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}