apache/seatunnel · warning

Ignore schema change event for unknown table

Error message

Ignore schema change event for unknown table {}, current table ids: {}

What it means

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.

Solutions

  1. Verify the tablePath in the event matches the table identifiers configured in the source (case, catalog, schema prefix)
  2. 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)
  3. Check connector configuration (table-names / catalog-table pattern) to ensure it covers all tables emitting schema changes
  4. Enable debug logging to compare rowTypeMap keys against incoming event tablePaths

Example fix

// before
table-names = "shop.orders"
// event arrives for shop.order_items
// after
table-names = "shop.orders,shop.order_items"
Defensive patterns

Strategy: validation

Validate before calling

// verify every table emitting schema changes is present in the job's table list
String tableId = event.tablePath().toString();
if (!configuredTableIds.contains(tableId)) {
  log.warn("Table {} not configured; add it to table-names or ignore its events", tableId);
}

Try / catch

// tolerate skipped tables but track them for reconciliation
try {
  applySchemaChange(event);
} catch (UnknownTableException e) {
  skippedTables.add(e.tableId()); // reconcile later against source config
}

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Understand the failure class

Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.

Related errors


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

Appendix: source

Thrown at seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/task/SeaTunnelSourceCollector.java:338

                if (dryRunSampleCount == dryRunSampleLimit && dryRunSampleComplete != null) {
                    dryRunSampleComplete.run();
                }
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public void collect(SchemaChangeEvent event) {
        try {
            if (rowType instanceof SeaTunnelRowType) {
                rowType = dataTypeChangeEventHandler.reset((SeaTunnelRowType) rowType).apply(event);
            } else if (rowType instanceof MultipleRowType) {
                String tableId = event.tablePath().toString();
                SeaTunnelRowType currentRowType = rowTypeMap.get(tableId);
                if (currentRowType == null) {
                    log.warn(
                            "Ignore schema change event for unknown table {}, current table ids: {}",
                            tableId,
                            rowTypeMap.keySet());
                    return;
                }
                rowTypeMap.put(
                        tableId, dataTypeChangeEventHandler.reset(currentRowType).apply(event));
            } else {
                throw new SeaTunnelEngineException(
                        "Unsupported row type: " + rowType.getClass().getName());
            }
            sendRecordToNext(new Record<>(event));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    @Override

View on GitHub (pinned to cf67b549a7)