Uploaded image for project: 'Debezium'
  1. Debezium
  2. DBZ-2047

MySQL alias `FLUSH TABLE` not handled

    XMLWordPrintable

Details

    Description

      We've run into an error where the connector fails to process a binlog event:

      2020-05-04 05:33:08.745  WARN [debezium-export,,,] 7455 --- [connect-tasks-2] c.g.h.s.c.services.ConnectorRestarter    : Failing connector: [xxxx @ 10.90.16.17:40033] RUNNING (id=0,worker=10.90.16.17:40033,state=FAILED,trace=org.apache.kafka.connect.errors.ConnectException: no viable alternative at input 'FLUSH TABLE'
              at io.debezium.connector.mysql.AbstractReader.wrap(AbstractReader.java:230)
              at io.debezium.connector.mysql.AbstractReader.failed(AbstractReader.java:207)
              at io.debezium.connector.mysql.BinlogReader.handleEvent(BinlogReader.java:536)
              at com.github.shyiko.mysql.binlog.BinaryLogClient.notifyEventListeners(BinaryLogClient.java:1095)
              at com.github.shyiko.mysql.binlog.BinaryLogClient.listenForEventPackets(BinaryLogClient.java:943)
              at com.github.shyiko.mysql.binlog.BinaryLogClient.connect(BinaryLogClient.java:580)
              at com.github.shyiko.mysql.binlog.BinaryLogClient$7.run(BinaryLogClient.java:825)
              at java.lang.Thread.run(Thread.java:748)
      Caused by: io.debezium.text.ParsingException: no viable alternative at input 'FLUSH TABLE'
              at io.debezium.antlr.ParsingErrorListener.syntaxError(ParsingErrorListener.java:40)
              at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:41)
              at org.antlr.v4.runtime.Parser.notifyErrorListeners(Parser.java:544)
              at org.antlr.v4.runtime.DefaultErrorStrategy.reportNoViableAlternative(DefaultErrorStrategy.java:310)
              at org.antlr.v4.runtime.DefaultErrorStrategy.reportError(DefaultErrorStrategy.java:136)
              at io.debezium.ddl.parser.mysql.generated.MySqlParser.sqlStatements(MySqlParser.java:1121)
              at io.debezium.ddl.parser.mysql.generated.MySqlParser.root(MySqlParser.java:849)
              at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:68)
              at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.parseTree(MySqlAntlrDdlParser.java:41)
              at io.debezium.antlr.AntlrDdlParser.parse(AntlrDdlParser.java:80)
              at io.debezium.connector.mysql.MySqlSchema.applyDdl(MySqlSchema.java:308)
              at io.debezium.connector.mysql.BinlogReader.handleQueryEvent(BinlogReader.java:729)
              at io.debezium.connector.mysql.BinlogReader.handleEvent(BinlogReader.java:519)
              ... 5 more
      Caused by: org.antlr.v4.runtime.NoViableAltException
              at org.antlr.v4.runtime.atn.ParserATNSimulator.noViableAlt(ParserATNSimulator.java:2026)
              at org.antlr.v4.runtime.atn.ParserATNSimulator.execATN(ParserATNSimulator.java:467)
              at org.antlr.v4.runtime.atn.ParserATNSimulator.adaptivePredict(ParserATNSimulator.java:393)
              at io.debezium.ddl.parser.mysql.generated.MySqlParser.sqlStatements(MySqlParser.java:923)
              ... 12 more
      
      

      The reason seems to be that the ANTLR parser only registers rules for `FLUSH TABLES`. However - according to MySQL documentation, `FLUSH TABLE` is an alias for `FLUSH TABLES` and should not fail IMO.

      Attachments

        Activity

          People

            Unassigned Unassigned
            epirealer Anders Engström (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: