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

Snapshot locking mode "minimal_percona" incorrectly resets transaction & isolation state

    XMLWordPrintable

Details

    Description

      When using minimal_percona snapshot locking mode, the SnapshotSourceIT#snapshotWithBackupLocksShouldNotWaitForReads fails with the following error:

      io.debezium.DebeziumException: java.sql.SQLException: Transaction characteristics can't be changed while a transaction is in progress
      	at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:82)
      	at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:110)
      	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
      	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
      	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      	at java.base/java.lang.Thread.run(Thread.java:834)
      Caused by: java.sql.SQLException: Transaction characteristics can't be changed while a transaction is in progress
      	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
      	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
      	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
      	at com.mysql.cj.jdbc.StatementImpl.executeInternal(StatementImpl.java:764)
      	at com.mysql.cj.jdbc.StatementImpl.execute(StatementImpl.java:648)
      	at io.debezium.jdbc.JdbcConnection.executeWithoutCommitting(JdbcConnection.java:1373)
      	at io.debezium.connector.mysql.MySqlSnapshotChangeEventSource.lockTablesForSchemaSnapshot(MySqlSnapshotChangeEventSource.java:203)
      	at io.debezium.relational.RelationalSnapshotChangeEventSource.doExecute(RelationalSnapshotChangeEventSource.java:115)
      	at io.debezium.pipeline.source.AbstractSnapshotChangeEventSource.execute(AbstractSnapshotChangeEventSource.java:71)
      	... 6 more
      

      This would seem to indicate that users who may be using this mode could encounter the same failure at runtime.

      Attachments

        Activity

          People

            ccranfor@redhat.com Chris Cranford
            ccranfor@redhat.com Chris Cranford
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: