{"record":{"id":"8b863238a82a3962","repo":"apache/seatunnel","slug":"unsupported-schemachangeevent","errorCode":null,"errorMessage":"Unsupported schemaChangeEvent : ","messagePattern":"Unsupported schemaChangeEvent : ","errorType":"exception","errorClass":"SeaTunnelException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-elasticsearch/src/main/java/org/apache/seatunnel/connectors/seatunnel/elasticsearch/sink/ElasticsearchSinkWriter.java","lineNumber":219,"sourceCode":"        initializeSerializer(tableSchema.toPhysicalRowDataType());\n    }\n\n    static boolean isCommentOnlyEvent(SchemaChangeEvent event) {\n        return event instanceof AlterTableCommentEvent || event instanceof AlterColumnCommentEvent;\n    }\n\n    private void applySingleSchemaChangeEvent(SchemaChangeEvent event) {\n        if (isCommentOnlyEvent(event)) {\n            log.debug(\"Ignore comment-only schema change event: {}\", event);\n        } else if (event instanceof AlterTableAddColumnEvent) {\n            AlterTableAddColumnEvent addColumnEvent = (AlterTableAddColumnEvent) event;\n            Column column = addColumnEvent.getColumn();\n            BasicTypeDefine<EsType> reconvert =\n                    ElasticSearchTypeConverter.INSTANCE.reconvert(column);\n            esRestClient.addField(indexInfo.getIndex(), reconvert);\n            log.info(\"Add column {} to index {}\", column.getName(), indexInfo.getIndex());\n        } else {\n            throw new SeaTunnelException(\"Unsupported schemaChangeEvent : \" + event.getEventType());\n        }\n    }\n\n    @Override\n    public Optional<ElasticsearchCommitInfo> prepareCommit() {\n        bulkEsWithRetry(this.esRestClient, this.requestEsList);\n        return Optional.empty();\n    }\n\n    /**\n     * Flushes pending bulk requests when the Zeta engine delivers a timer flush signal.\n     *\n     * <p>The action is registered before multi-table resource injection but invoked after startup.\n     */\n    private void timerFlush() {\n        bulkEsWithRetry(this.esRestClient, this.requestEsList);\n    }\n","sourceCodeStart":201,"sourceCodeEnd":237,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-elasticsearch/src/main/java/org/apache/seatunnel/connectors/seatunnel/elasticsearch/sink/ElasticsearchSinkWriter.java#L201-L237","documentation":"applySingleSchemaChangeEvent only supports AddColumnEvent; when ES reconverts the new column it calls esRestClient.addField to update the index mapping. Any other AlterTableColumnEvent subtype throws SeaTunnelException('Unsupported schemaChangeEvent : ' + event.getEventType()).","triggerScenarios":"A CDC schema-change event of type other than ADD_COLUMN (e.g. DROP_COLUMN, RENAME_COLUMN, MODIFY_COLUMN, CHANGE_COLUMN_TYPE) reaches the ES sink during applySchemaChange.","commonSituations":"Upstream databases altering column types, renaming or dropping columns while a CDC sync into Elasticsearch is running.","solutions":["Only perform ADD COLUMN DDL on synced tables, or apply drop/rename/modify manually to the ES index mapping","Filter unsupported column events upstream via a transform or routing","Upgrade the connector if newer versions support more event types"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":"if (event instanceof AlterTableColumnEvent && !(event instanceof AddColumnEvent)) {\n    log.warn(\"Only ADD COLUMN is supported by ES sink; event type: \" + ((AlterTableColumnEvent) event).getEventType());\n    return;\n}","typeGuard":"boolean isAddColumnEvent(AlterTableEvent e) {\n    return e instanceof AddColumnEvent;\n}","tryCatchPattern":null,"preventionTips":["Restrict pipeline DDL to ADD COLUMN","Manually maintain index mappings for drop/rename/modify operations","Audit upstream schema-change producers feeding the sink"],"tags":["elasticsearch","schema-change","cdc","unsupported-event"],"backgroundTag":"unsupported-enum-value","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}