{"record":{"id":"7b49e218f2c56e40","repo":"apache/seatunnel","slug":"rollback-statements-cannot-be-handled-without-binl","errorCode":null,"errorMessage":"Rollback statements cannot be handled without binlog buffering, the connector will fail. Please check '{}' to see how to enable buffering","messagePattern":"Rollback statements cannot be handled without binlog buffering, the connector will fail\\. Please check '(.+?)' to see how to enable buffering","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"seatunnel-connectors-v2/connector-cdc/connector-cdc-mysql/src/main/java/io/debezium/connector/mysql/MySqlStreamingChangeEventSource.java","lineNumber":658,"sourceCode":"            // This is an XA transaction, and we currently ignore these and do nothing ...\n            return;\n        }\n        if (connectorConfig.getDdlFilter().test(sql)) {\n            LOGGER.debug(\"DDL '{}' was filtered out of processing\", sql);\n            return;\n        }\n        if (upperCasedStatementBegin.equals(\"INSERT \")\n                || upperCasedStatementBegin.equals(\"UPDATE \")\n                || upperCasedStatementBegin.equals(\"DELETE \")) {\n            LOGGER.warn(\n                    \"Received DML '\"\n                            + sql\n                            + \"' for processing, binlog probably contains events generated with statement or mixed based replication format\");\n            return;\n        }\n        if (sql.equalsIgnoreCase(\"ROLLBACK\")) {\n            // We have hit a ROLLBACK which is not supported\n            LOGGER.warn(\n                    \"Rollback statements cannot be handled without binlog buffering, the connector will fail. Please check '{}' to see how to enable buffering\",\n                    MySqlConnectorConfig.BUFFER_SIZE_FOR_BINLOG_READER.name());\n        }\n\n        final List<SchemaChangeEvent> schemaChangeEvents =\n                taskContext\n                        .getSchema()\n                        .parseStreamingDdl(\n                                partition,\n                                sql,\n                                command.getDatabase(),\n                                offsetContext,\n                                clock.currentTimeAsInstant());\n        try {\n            for (SchemaChangeEvent schemaChangeEvent : schemaChangeEvents) {\n                if (taskContext.getSchema().skipSchemaChangeEvent(schemaChangeEvent)) {\n                    continue;\n                }","sourceCodeStart":640,"sourceCodeEnd":676,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-cdc/connector-cdc-mysql/src/main/java/io/debezium/connector/mysql/MySqlStreamingChangeEventSource.java#L640-L676","documentation":"A ROLLBACK statement appeared in the binlog as a QUERY event. Without binlog buffering enabled, Debezium cannot correctly process rollback semantics and warns that the connector will eventually fail if this keeps occurring. The warning points to the binlog.buffer.size config that enables buffering to handle it.","triggerScenarios":"handleQueryEvent receives sql equal (case-insensitive) to 'ROLLBACK' while the buffered binlog reader is not enabled (MySqlConnectorConfig.BUFFER_SIZE_FOR_BINLOG_READER unset/zero), typically under binlog_format=STATEMENT or MIXED where explicit transaction statements are logged.","commonSituations":"Statement-based replication sources where applications issue explicit ROLLBACK; MIXED-format binlogs from legacy databases; connectors streaming through transaction-control statements issued by migration tools.","solutions":["Enable binlog buffering by setting mysql connector 'database.binlog.buffer.size' (MySqlConnectorConfig.BUFFER_SIZE_FOR_BINLOG_READER) to a positive value","Switch the source to binlog_format=ROW, which does not log ROLLBACK statements, and re-snapshot","Identify the client issuing explicit ROLLBACK in binlogs (mysqlbinlog review) and refactor its transaction handling","If failures follow the warning, restart streaming from a position before the ROLLBACK with buffering enabled"],"exampleFix":"// before\n// no buffer configured\n// after\n\"database.binlog.buffer.size\": 20480","handlingStrategy":"validation","validationCode":"// Enable buffering support before starting the connector:\n// config['database.binlog.buffer.size'] = 20480  // > 0\n// and verify binlog_format=ROW on the source","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Set database.binlog.buffer.size to a positive value when statement/mixed sources are unavoidable","Migrate the source to binlog_format=ROW","Avoid applications issuing explicit ROLLBACK against CDC-monitored schemas","Review binlogs with mysqlbinlog for transaction-control statements before onboarding a database"],"tags":["mysql","cdc","binlog","transaction"],"backgroundTag":"unsupported-operation","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"}