-- 5.7.21 - manually patched @@ -1460,10 +1460,12 @@ int ha_prepare(THD *thd) thd->status_var.ha_prepare_count++; if (ht->prepare) { - DBUG_EXECUTE_IF("simulate_xa_failure_prepare", { - ha_rollback_trans(thd, true); - DBUG_RETURN(1); - }); + if (ht->db_type == DB_TYPE_INNODB) { + DBUG_EXECUTE_IF("simulate_xa_failure_prepare", { + ha_rollback_trans(thd, true); + DBUG_RETURN(1); + }); + } if (ht->prepare(ht, thd, true)) { ha_rollback_trans(thd, true); rm -rf CMackeCache.txt cmake . -DWITH_DEBUG=1 -DWITH_BOOST=./boost -DCMAKE_INSTALL_PREFIX=/export/umesh/server/source/bugs/src_build/89860/5721 make -j16 make install -- -- mtr test case provided by reporter [umshastr@hod03]/export/umesh/server/source/bugs/src_build/89860/5721/mysql-test: ./mtr rpl_bug89860 Logging: ./mtr rpl_bug89860 MySQL Version 5.7.21 Checking supported features... - SSL connections supported - binaries are debug compiled Collecting tests... Removing old var directory... Creating var directory '/export/umesh/server/source/bugs/src_build/89860/5721/mysql-test/var'... Installing system database... Using parallel: 1 ============================================================================== TEST RESULT TIME (ms) or COMMENT -------------------------------------------------------------------------- worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009 include/master-slave.inc [connection master] CREATE TABLE ti (c1 INT) ENGINE=INNODB; XA START 'x'; INSERT INTO ti VALUES(1); XA END 'x'; SET @@session.debug = '+d,simulate_xa_failure_prepare'; XA PREPARE 'x'; ERROR XA100: XA_RBROLLBACK: Transaction branch was rolled back #Master XA RECOVER; formatID gtrid_length bqual_length data #Slave XA RECOVER; formatID gtrid_length bqual_length data 1 1 0 x ------- --- a/sql/handler.cc +++ b/sql/handler.cc @@ -1479,6 +1479,7 @@ int ha_prepare(THD *thd) } ha_info= ha_info->next(); } + DBUG_EXECUTE_IF("crash_after_xa_prepare", DBUG_SUICIDE();); DBUG_ASSERT(thd->get_transaction()->xid_state()-> has_state(XID_STATE::XA_IDLE)); rm -rf CMackeCache.txt cmake . -DWITH_DEBUG=1 -DWITH_BOOST=./boost -DCMAKE_INSTALL_PREFIX=/export/umesh/server/source/bugs/src_build/89860/5721 make -j16 make install -- mtr test case provided by reporter [umshastr@hod03]/export/umesh/server/source/bugs/src_build/89860/5721/mysql-test: ./mtr rpl_bug89860 Logging: ./mtr rpl_bug89860 MySQL Version 5.7.21 Checking supported features... - SSL connections supported - binaries are debug compiled Collecting tests... Checking leftover processes... Removing old var directory... Creating var directory '/export/umesh/server/source/bugs/src_build/89860/5721/mysql-test/var'... Installing system database... Using parallel: 1 ============================================================================== TEST RESULT TIME (ms) or COMMENT -------------------------------------------------------------------------- worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009 CREATE TABLE ti (c1 INT) ENGINE=INNODB; XA START 'x'; INSERT INTO ti VALUES(1); XA END 'x'; SET @@session.debug = '+d,crash_after_xa_prepare'; XA PREPARE 'x'; ERROR HY000: Lost connection to MySQL server during query # restart XA RECOVER; formatID gtrid_length bqual_length data show binlog events in 'master-bin.000001'; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 4 Format_desc 1 123 Server ver: 5.7.21-debug-log, Binlog ver: 4 master-bin.000001 123 Previous_gtids 1 154 master-bin.000001 154 Anonymous_Gtid 1 219 SET @@SESSION.GTID_NEXT= 'ANONYMOUS' master-bin.000001 219 Query 1 331 use `test`; CREATE TABLE ti (c1 INT) ENGINE=INNODB master-bin.000001 331 Anonymous_Gtid 1 396 SET @@SESSION.GTID_NEXT= 'ANONYMOUS' master-bin.000001 396 Query 1 483 XA START X'78',X'',1 master-bin.000001 483 Table_map 1 528 table_id: 222 (test.ti) master-bin.000001 528 Write_rows 1 568 table_id: 222 flags: STMT_END_F master-bin.000001 568 Query 1 653 XA END X'78',X'',1 master-bin.000001 653 XA_prepare 1 690 XA PREPARE X'78',X'',1 main.rpl_bug89860 [ pass ] 1354