apache/seatunnel · error · SeaTunnelException

Unsupported schemaChangeEvent : <eventType>

Error message

Unsupported schemaChangeEvent : <eventType>

What it means

SchemaChangeManager.applySchemaChange only knows how to handle a fixed set of schema change event types (add/change column, etc.) and explicitly ignores comment-only events. Any other AddColumnEvent/AlterTableChangeColumnEvent/AlterTableColumnEvent subtype that falls through the if/else chain is rejected with SeaTunnelException. This prevents silently dropping DDL the sink cannot translate to Doris.

Source

Thrown at seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/schema/SchemaChangeManager.java:146

                AlterTableDropColumnEvent dropColumnEvent = (AlterTableDropColumnEvent) event;
                if (!columnExists(tablePath, dropColumnEvent.getColumn())) {
                    log.warn(
                            "Column {} does not exist in table {}. Skipping drop column operation. event: {}",
                            dropColumnEvent.getColumn(),
                            tablePath.getFullName(),
                            event);
                    return;
                }
                applySchemaChange(tablePath, dropColumnEvent);
            } else if (event instanceof AlterTableCommentEvent
                    || event instanceof AlterColumnCommentEvent) {
                // Comment-only changes are not supported by Doris sink, safely ignore
                log.info(
                        "Ignoring comment change event for table {} - Doris sink does not support comment sync: {}",
                        tablePath.getFullName(),
                        event.getEventType());
            } else {
                throw new SeaTunnelException(
                        "Unsupported schemaChangeEvent : " + event.getEventType());
            }
        }
    }

    public void applySchemaChange(TablePath tablePath, AlterTableChangeColumnEvent event)
            throws IOException {
        StringBuilder sqlBuilder =
                new StringBuilder()
                        .append("ALTER TABLE")
                        .append(" ")
                        .append(tablePath.getFullName())
                        .append(" ")
                        .append("RENAME COLUMN")
                        .append(" ")
                        .append(quoteIdentifier(event.getOldColumn()))
                        .append(" ")
                        .append(quoteIdentifier(event.getColumn().getName()));

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Check the event type; filter out unsupported events (e.g. truncate/drop) upstream before they reach the sink
  2. Restrict the source's schema-change include/exclude configuration to event types the Doris sink supports
  3. Upgrade SeaTunnel so SchemaChangeManager covers the event type

Example fix

// before
// sink receives all CDC schema events
// after (source config)
schema_change_config {
  include = "ADD COLUMN, CHANGE COLUMN"
}
Defensive patterns

Strategy: try-catch

Validate before calling

Set<String> supported = Set.of("ADD_COLUMN","CHANGE_COLUMN","ALTER_COLUMN");
if (!supported.contains(event.getEventType().name())) log.warn("skipping " + event);

Try / catch

try {
    schemaChangeManager.applySchemaChange(tablePath, event);
} catch (SeaTunnelException e) {
    if (e.getMessage().startsWith("Unsupported schemaChangeEvent")) {
        log.warn("Ignoring unsupported event: {}", e.getMessage());
    } else throw e;
}

Prevention

When it happens

Trigger: CDC pipeline (e.g. MySQL->Doris) where the upstream emits a schema change event type not covered by the manager's if/else chain, such as truncate, drop-table, rename-table or a newly added connector event type.

Common situations: Debezium/CDAS sources sending TRUNCATE or DROP events to Doris; upgrading a source connector that introduces new event types before the Doris sink learns to translate them.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


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