Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-37229

Applier thread performing IST is left with REPEATABLE_READ isolation level

    XMLWordPrintable

Details

    • Bug
    • Status: Stalled (View Workflow)
    • Critical
    • Resolution: Unresolved
    • 10.6
    • 10.6
    • Galera, Galera SST
    • None

    Description

      Every applier thread in Galera should run with READ_COMMITTED transaction isolation level to prevent applying issues caused by InnoDB gap locks.

      However, an applier thread performing IST process is left with REPEATABLE_READ isolation level. To reproduce, it's enough to run galera.galera_binlog_stmt_autoinc with the node 2 having wsrep-slave-threads=2 in the corresponding .cnf file.

      The test fails, and the error message in the log is:

      [ERROR] Slave SQL: Error 'Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.' on query. Default database: 'test'. Query: 'insert into t1(i) values(null)', Internal MariaDB error code: 1665
      

      which means that the test passes only because there's a single applier thread, and after performing IST, it has REPEATABLE_READ isolation level, which allows it to execute events in binlog statement replication format.

      Attachments

        Activity

          People

            denis.protivensky Denis Protivensky
            denis.protivensky Denis Protivensky
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.