-
Bug
-
Resolution: Done
-
Major
-
2.4.0.Final
-
None
-
False
-
-
False
-
Important
Hello,
I'm using Airbyte as a data ETL tool to transfer data from MySQL to BigQuery.
Airbyte uses Debezium as a backbone for fetching data from MySQL.
Lately we faced the issue that Debezium is not able to parse specific binary log event.
SQL that we executed:
'ALTER TABLE `order` ADD cancelled TINYINT(1) DEFAULT 0 NOT NULL, ADD delivered TINYINT(1) DEFAULT 0 NOT NULL, ADD returning TINYINT(1) DEFAULT 0 NOT NULL'
What Debezium connector do you use and what version?
2.4.0
What is the connector configuration?
-
What is the captured database version and mode of depoyment?
AWS RDS MySQL v. 8.0.36
What behaviour do you expect?
Binary log gets imported
What behaviour do you see?
Binary log event is causing a fatal error and replication cannot continue
Do you see the same behaviour using the latest relesead Debezium version?
I cannot test this as the version is embedded into Airbyte itself
Do you have the connector logs, ideally from start till finish?
Error that we receive is as followed:
2024-03-19 23:46:41 source > 2024-03-19 23:46:41 ERROR i.d.c.m.MySqlStreamingChangeEventSource(logStreamingSourceState):1161 - Error during binlog processing. Last offset stored = {transaction_id=null, ts_sec=1710846937, file=mysql-bin-changelog.117871, pos=2691603, server_id=69937904, event=1}, binlog reader near position = mysql-bin-changelog.117871/2691603
2024-03-19 23:46:41 source > 2024-03-19 23:46:41 ERROR i.d.p.ErrorHandler(setProducerThrowable):52 - Producer failure
2024-03-19 23:46:41 source > io.debezium.DebeziumException: Error processing binlog event
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.MySqlStreamingChangeEventSource.handleEvent(MySqlStreamingChangeEventSource.java:395) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.MySqlStreamingChangeEventSource.lambda$execute$27(MySqlStreamingChangeEventSource.java:930) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at com.github.shyiko.mysql.binlog.BinaryLogClient.notifyEventListeners(BinaryLogClient.java:1246) [mysql-binlog-connector-java-0.28.1.jar:0.28.1]
2024-03-19 23:46:41 source > at com.github.shyiko.mysql.binlog.BinaryLogClient.listenForEventPackets(BinaryLogClient.java:1072) [mysql-binlog-connector-java-0.28.1.jar:0.28.1]
2024-03-19 23:46:41 source > at com.github.shyiko.mysql.binlog.BinaryLogClient.connect(BinaryLogClient.java:631) [mysql-binlog-connector-java-0.28.1.jar:0.28.1]
2024-03-19 23:46:41 source > at com.github.shyiko.mysql.binlog.BinaryLogClient$7.run(BinaryLogClient.java:932) [mysql-binlog-connector-java-0.28.1.jar:0.28.1]
2024-03-19 23:46:41 source > at java.base/java.lang.Thread.run(Thread.java:833) [?:?]
2024-03-19 23:46:41 source > Caused by: io.debezium.text.ParsingException: DDL statement couldn't be parsed. Please open a Jira issue with the statement 'ALTER TABLE `order` ADD cancelled TINYINT(1) DEFAULT 0 NOT NULL, ADD delivered TINYINT(1) DEFAULT 0 NOT NULL, ADD returning TINYINT(1) DEFAULT 0 NOT NULL'
2024-03-19 23:46:41 source > no viable alternative at input 'ALTER TABLE `order` ADD cancelled TINYINT(1) DEFAULT 0 NOT NULL, ADD delivered TINYINT(1) DEFAULT 0 NOT NULL, ADD returning'
2024-03-19 23:46:41 source > at io.debezium.antlr.ParsingErrorListener.syntaxError(ParsingErrorListener.java:43) ~[debezium-ddl-parser-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:41) ~[antlr4-runtime-4.10.1.jar:4.10.1]
2024-03-19 23:46:41 source > at org.antlr.v4.runtime.Parser.notifyErrorListeners(Parser.java:543) ~[antlr4-runtime-4.10.1.jar:4.10.1]
2024-03-19 23:46:41 source > at org.antlr.v4.runtime.DefaultErrorStrategy.reportNoViableAlternative(DefaultErrorStrategy.java:310) ~[antlr4-runtime-4.10.1.jar:4.10.1]
2024-03-19 23:46:41 source > at org.antlr.v4.runtime.DefaultErrorStrategy.reportError(DefaultErrorStrategy.java:136) ~[antlr4-runtime-4.10.1.jar:4.10.1]
2024-03-19 23:46:41 source > at io.debezium.ddl.parser.mysql.generated.MySqlParser.sqlStatements(MySqlParser.java:1272) ~[debezium-ddl-parser-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.ddl.parser.mysql.generated.MySqlParser.root(MySqlParser.java:988) ~[debezium-ddl-parser-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:74) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:46) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.antlr.AntlrDdlParser.parse(AntlrDdlParser.java:78) ~[debezium-ddl-parser-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.MySqlDatabaseSchema.parseDdl(MySqlDatabaseSchema.java:213) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.MySqlDatabaseSchema.parseStreamingDdl(MySqlDatabaseSchema.java:199) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.MySqlStreamingChangeEventSource.handleQueryEvent(MySqlStreamingChangeEventSource.java:593) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.MySqlStreamingChangeEventSource.lambda$execute$15(MySqlStreamingChangeEventSource.java:901) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.MySqlStreamingChangeEventSource.handleEvent(MySqlStreamingChangeEventSource.java:375) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > ... 6 more
2024-03-19 23:46:41 source > Caused by: org.antlr.v4.runtime.NoViableAltException
2024-03-19 23:46:41 source > at org.antlr.v4.runtime.atn.ParserATNSimulator.noViableAlt(ParserATNSimulator.java:2028) ~[antlr4-runtime-4.10.1.jar:4.10.1]
2024-03-19 23:46:41 source > at org.antlr.v4.runtime.atn.ParserATNSimulator.execATN(ParserATNSimulator.java:467) ~[antlr4-runtime-4.10.1.jar:4.10.1]
2024-03-19 23:46:41 source > at org.antlr.v4.runtime.atn.ParserATNSimulator.adaptivePredict(ParserATNSimulator.java:393) ~[antlr4-runtime-4.10.1.jar:4.10.1]
2024-03-19 23:46:41 source > at io.debezium.ddl.parser.mysql.generated.MySqlParser.sqlStatements(MySqlParser.java:1064) ~[debezium-ddl-parser-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.ddl.parser.mysql.generated.MySqlParser.root(MySqlParser.java:988) ~[debezium-ddl-parser-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:74) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:46) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.antlr.AntlrDdlParser.parse(AntlrDdlParser.java:78) ~[debezium-ddl-parser-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.MySqlDatabaseSchema.parseDdl(MySqlDatabaseSchema.java:213) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.MySqlDatabaseSchema.parseStreamingDdl(MySqlDatabaseSchema.java:199) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.MySqlStreamingChangeEventSource.handleQueryEvent(MySqlStreamingChangeEventSource.java:593) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.MySqlStreamingChangeEventSource.lambda$execute$15(MySqlStreamingChangeEventSource.java:901) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > at io.debezium.connector.mysql.MySqlStreamingChangeEventSource.handleEvent(MySqlStreamingChangeEventSource.java:375) ~[debezium-connector-mysql-2.4.0.Final.jar:2.4.0.Final]
2024-03-19 23:46:41 source > ... 6 more
2024-03-19 23:46:41 source > 2024-03-19 23:46:41 INFO i.d.c.m.MySqlStreamingChangeEventSource(handleEvent):400 - Error processing binlog event, and propagating to Kafka Connect so it stops this connector. Future binlog events read before connector is shutdown will be ignored.
2024-03-19 23:46:41 source > 2024-03-19 23:46:41 INFO i.d.e.EmbeddedEngine(stopTaskAndCommitOffset):1046 - Stopping the task and engine
2024-03-19 23:46:41 source > 2024-03-19 23:46:41 INFO i.d.c.c.BaseSourceTask(stop):284 - Stopping down connector
How to reproduce the issue using our tutorial deployment?
Create a table, then later add specific DDL to the database
- links to
-
RHEA-2024:129636
Red Hat build of Debezium 2.5.4 release