{"record":{"id":"914a64546ae3769d","repo":"apache/seatunnel","slug":"ignore-schema-change-event-for-unknown-table-c","errorCode":null,"errorMessage":"Ignore schema change event for unknown table {}, current table ids: {}","messagePattern":"Ignore schema change event for unknown table (.+?), current table ids: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/task/SeaTunnelSourceCollector.java","lineNumber":338,"sourceCode":"                if (dryRunSampleCount == dryRunSampleLimit && dryRunSampleComplete != null) {\n                    dryRunSampleComplete.run();\n                }\n            }\n        } catch (IOException e) {\n            throw new RuntimeException(e);\n        }\n    }\n\n    @Override\n    public void collect(SchemaChangeEvent event) {\n        try {\n            if (rowType instanceof SeaTunnelRowType) {\n                rowType = dataTypeChangeEventHandler.reset((SeaTunnelRowType) rowType).apply(event);\n            } else if (rowType instanceof MultipleRowType) {\n                String tableId = event.tablePath().toString();\n                SeaTunnelRowType currentRowType = rowTypeMap.get(tableId);\n                if (currentRowType == null) {\n                    log.warn(\n                            \"Ignore schema change event for unknown table {}, current table ids: {}\",\n                            tableId,\n                            rowTypeMap.keySet());\n                    return;\n                }\n                rowTypeMap.put(\n                        tableId, dataTypeChangeEventHandler.reset(currentRowType).apply(event));\n            } else {\n                throw new SeaTunnelEngineException(\n                        \"Unsupported row type: \" + rowType.getClass().getName());\n            }\n            sendRecordToNext(new Record<>(event));\n        } catch (IOException e) {\n            throw new RuntimeException(e);\n        }\n    }\n\n    @Override","sourceCodeStart":320,"sourceCodeEnd":356,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/task/SeaTunnelSourceCollector.java#L320-L356","documentation":"SeaTunnelSourceCollector (multi-table mode) received a schema-change event whose tablePath does not exist in its rowTypeMap, so the event cannot be applied. It is ignored with this warning and processing continues with the existing schemas.","triggerScenarios":"A source connector (e.g. CDC multi-table) emits an AddColumnEvent/AlterTableEvent for a table that was never registered in the collector's rowTypeMap — e.g. a new table appeared after job start that wasn't included in the table list, or tablePath naming differs.","commonSituations":"Upstream database adds a table not covered by the job's table config; case/format differences in table identifiers (schema.table) between the event and configured tables; events for dropped/excluded tables arriving mid-stream.","solutions":["Verify the tablePath in the event matches the table identifiers configured in the source (case, catalog, schema prefix)","If the new table should be read, add it to the source's table list and restart the job (dynamic table addition is not applied automatically here)","Check connector configuration (table-names / catalog-table pattern) to ensure it covers all tables emitting schema changes","Enable debug logging to compare rowTypeMap keys against incoming event tablePaths"],"exampleFix":"// before\ntable-names = \"shop.orders\"\n// event arrives for shop.order_items\n// after\ntable-names = \"shop.orders,shop.order_items\"","handlingStrategy":"validation","validationCode":"// verify every table emitting schema changes is present in the job's table list\nString tableId = event.tablePath().toString();\nif (!configuredTableIds.contains(tableId)) {\n  log.warn(\"Table {} not configured; add it to table-names or ignore its events\", tableId);\n}","typeGuard":null,"tryCatchPattern":"// tolerate skipped tables but track them for reconciliation\ntry {\n  applySchemaChange(event);\n} catch (UnknownTableException e) {\n  skippedTables.add(e.tableId()); // reconcile later against source config\n}","preventionTips":["Keep the source's table-names/catalog-table config in sync with the upstream database","Match table identifier casing exactly (some catalogs are case-sensitive)","When new tables are added upstream, update config and restart the job","Monitor this warning as a signal of config drift between source DB and job config"],"tags":["cdc","schema-change","multi-table","data-sync"],"backgroundTag":"schema-validation-failed","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"}