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

Recovery failed! You must enable exactly 3 storage engines that support two-phase commit protocol

    Details

    • Type: Bug
    • Status: Confirmed
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 10.1
    • Fix Version/s: 10.1
    • Component/s: Plugins
    • Labels:
      None

      Description

      Test flow
      - start server with SEQUENCE and InnoDB
      - kill server (do not shut down, make it die)
      - start server without SEQUENCE
        => server does not start
      

      Note: It does not matter which xa-capable engine is missing, and whether it is missing or it newly appeared, only the number matters. E.g. it can be reproduced by adding TokuDB instead of removing SEQUENCE; on the other hand, if you remove SEQUENCE and add TokuDB at once, the server starts all right, because the number of engines is the same.

      Test case
      --source include/have_innodb.inc
      
      --echo # Shutdown the server...
      
      --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
      --shutdown_server 10
      --source include/wait_until_disconnected.inc
      
      --echo # Restart the server with SEQUENCE enabled....
      
      --exec echo "restart:--sequence --plugin-load-add=ha_sequence.so" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
      --enable_reconnect
      --source include/wait_until_connected_again.inc
      
      select engine, support from information_schema.engines;
      
      --echo # Kill the server....
      
      --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
      --shutdown_server 0
      --source include/wait_until_disconnected.inc
      
      --echo # Restart the server without SEQUENCE....
      
      --exec echo "restart:--loose-skip-sequence" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
      --enable_reconnect
      --source include/wait_until_connected_again.inc
      
      select engine, support from information_schema.engines;
      
      --echo # All done.
      
      2015-09-11 20:15:30 139911419701088 [ERROR] Recovery failed! You must enable exactly 3 storage engines that support two-phase commit protocol
      2015-09-11 20:15:30 139911419701088 [ERROR] Crash recovery failed. Either correct the problem (if it's, for example, out of memory error) and restart, or delete tc log and start mysqld with --tc-heuristic-recover={commit|rollback}
      2015-09-11 20:15:30 139911419701088 [ERROR] Can't init tc log
      2015-09-11 20:15:30 139911419701088 [ERROR] Aborting
      

      Also, the number it reports looks weird. When there were two engines and one is gone, it asks for 3, etc.

        Gliffy Diagrams

          Attachments

            Activity

            There are no comments yet on this issue.

              People

              • Assignee:
                serg Sergei Golubchik
                Reporter:
                elenst Elena Stepanova
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated: