source include/have_semisync_plugin.inc; source include/not_embedded.inc; source include/master-slave.inc; source include/have_innodb.inc; let $engine_type= InnoDB; # Suppress warnings that might be generated during the test disable_query_log; connection master; call mtr.add_suppression("Timeout waiting for reply of binlog"); call mtr.add_suppression("Semi-sync master .* waiting for slave reply"); call mtr.add_suppression("Read semi-sync reply"); call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT."); connection slave; call mtr.add_suppression("Master server does not support semi-sync"); call mtr.add_suppression("Semi-sync slave .* reply"); call mtr.add_suppression("Slave SQL.*Request to stop slave SQL Thread received while applying a group that has non-transactional changes; waiting for completion of the group"); enable_query_log; connection master; disable_query_log; let $value = query_get_value(show variables like 'rpl_semi_sync_master_enabled', Value, 1); if ($value == No such row) { set sql_log_bin=0; eval INSTALL PLUGIN rpl_semi_sync_master SONAME '$SEMISYNC_MASTER_SO'; SET GLOBAL rpl_semi_sync_master_enabled = 1; set sql_log_bin=1; } enable_query_log; connection slave; source include/stop_slave.inc; disable_query_log; let $value= query_get_value(show variables like 'rpl_semi_sync_slave_enabled', Value, 1); if ($value == No such row) { set sql_log_bin=0; eval INSTALL PLUGIN rpl_semi_sync_slave SONAME '$SEMISYNC_SLAVE_SO'; SET GLOBAL rpl_semi_sync_slave_enabled = 1; set sql_log_bin=1; } enable_query_log; source include/start_slave.inc; connection master; SET GLOBAL event_scheduler = ON; replace_result $engine_type ENGINE_TYPE; eval CREATE TABLE t1 (i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f varchar(8)) ENGINE=$engine_type; INSERT INTO t1 (f) VALUES ('a'),('a'),('a'),('a'),('a'); INSERT INTO t1 SELECT i+5, f FROM t1; INSERT INTO t1 SELECT i+10, f FROM t1; CREATE EVENT ev1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO t1 VALUES (SLEEP(5),CONCAT('ev1_',CONNECTION_ID())); CREATE EVENT ev2 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO t1 VALUES (SLEEP(5),CONCAT('ev2_',CONNECTION_ID())); connection slave; STOP SLAVE IO_THREAD; connection master; let $run = 20; while ($run) { connect (m$run,localhost,root,,); connection m$run; send; eval UPDATE t1 SET f = CONCAT('up_',CONNECTION_ID()) WHERE i = $run; connection master; dec $run; } connection master; SET GLOBAL event_scheduler = OFF; let $run = 20; while ($run) { connection m$run; reap; disconnect m$run; dec $run; } # # Clean up # connection slave; source include/stop_slave.inc; disable_warnings; UNINSTALL PLUGIN rpl_semi_sync_slave; connection master; UNINSTALL PLUGIN rpl_semi_sync_master; enable_warnings; connection slave; source include/start_slave.inc; connection master; DROP EVENT ev1; DROP EVENT ev2; DROP TABLE t1; sync_slave_with_master; --source include/rpl_end.inc