Comment 14 for bug 1331586

Revision history for this message
Sergei Glushchenko (sergei.glushchenko) wrote :

Here is test case I am using to reproduce the stall

=== added file 'mysql-test/suite/rpl/t/percona_bug1331586-master.opt'
--- mysql-test/suite/rpl/t/percona_bug1331586-master.opt 1970-01-01 00:00:00 +0000
+++ mysql-test/suite/rpl/t/percona_bug1331586-master.opt 2014-07-08 17:35:34 +0000
@@ -0,0 +1,3 @@
+--gtid_mode=ON
+--enforce_gtid_consistency=true
+--log-slave-updates

=== added file 'mysql-test/suite/rpl/t/percona_bug1331586-slave.opt'
--- mysql-test/suite/rpl/t/percona_bug1331586-slave.opt 1970-01-01 00:00:00 +0000
+++ mysql-test/suite/rpl/t/percona_bug1331586-slave.opt 2014-07-08 17:35:34 +0000
@@ -0,0 +1,4 @@
+--slave_parallel_workers=8
+--gtid_mode=ON
+--enforce_gtid_consistency=true
+--log-slave-updates

=== added file 'mysql-test/suite/rpl/t/percona_bug1331586.test'
--- mysql-test/suite/rpl/t/percona_bug1331586.test 1970-01-01 00:00:00 +0000
+++ mysql-test/suite/rpl/t/percona_bug1331586.test 2014-07-08 17:35:34 +0000
@@ -0,0 +1,38 @@
+--source include/have_debug.inc
+--source include/master-slave.inc
+--source include/have_binlog_format_statement.inc
+
+--disable_query_log
+call mtr.add_suppression("Slave:*");
+--enable_query_log
+
+create table a(id int) engine=InnoDB;
+start transaction;
+insert into a values(1);
+
+connection slave;
+set global debug="d,crash_xid_log_event";
+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+
+connection master;
+insert into a values(2);
+insert into a values(3);
+commit;
+
+connection slave;
+--source include/wait_until_disconnected.inc
+
+--let $rpl_server_number= 2
+--source include/rpl_start_server.inc
+--source include/start_slave.inc
+
+connection master;
+sync_slave_with_master;
+select * from a;
+
+connection master;
+drop table a;
+
+sync_slave_with_master;
+
+--source include/rpl_end.inc

=== modified file 'sql/rpl_slave.cc'
--- sql/rpl_slave.cc 2014-06-04 14:48:06 +0000
+++ sql/rpl_slave.cc 2014-07-08 17:35:34 +0000
@@ -6370,6 +6370,12 @@
     mysql_mutex_unlock(&mi->data_lock);
     DBUG_RETURN(ret);
   }
+ DBUG_EXECUTE_IF("crash_xid_log_event",
+ if (event_type == XID_EVENT)
+ {
+ DBUG_SUICIDE();
+ }
+ );

   switch (event_type) {
   case STOP_EVENT: