1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
################################################################################
# It verifies the feature that semisync waits after binlog sync and before
# transaction commit(WL#6355).
#
# Two wait points are there for semisync. AFTER_SYNC and AFTER_COMMIT
# The main differece is that Other sessions could NOT see the data before it
# replicated to slave if waiting at AFTER_SYNC wait point. In contrast, when
# waiting at AFTER_COMMIT, other sessions could see the data before it is
# replicated to slave.
#################################################################################
--source include/not_group_replication_plugin.inc
--source include/have_debug_sync.inc
--source include/master-slave.inc
--source include/have_semisync_plugin.inc
--source include/install_semisync.inc
SET GLOBAL binlog_error_action = IGNORE_ERROR;
CREATE TABLE t1(c1 INT) ENGINE=InnoDB;
--source include/sync_slave_sql_with_master.inc
--source extra/rpl_tests/rpl_semi_sync_after_sync.test
--source include/rpl_connection_master.inc
--let $saved_binlog_order_commits= `SELECT @@GLOBAL.binlog_order_commits`
SET GLOBAL binlog_order_commits = OFF;
--source extra/rpl_tests/rpl_semi_sync_after_sync.test
--source include/rpl_connection_master.inc
eval SET GLOBAL binlog_order_commits= $saved_binlog_order_commits;
--echo #
--echo # For coverage test, simulate after_sync hook error
--echo #
SET @saved_debug= @@GLOBAL.debug;
SET GLOBAL debug='+d,simulate_after_sync_hook_error';
INSERT INTO t1 VALUES(1);
SELECT * FROM t1;
SET GLOBAL debug= @saved_debug;
CALL mtr.add_suppression("Failed to run 'after_sync' hook");
# Binlog is closed due to above error. Restart the server to
# enable the binlog again to continue the test.
--let $rpl_server_number= 1
--source include/rpl_restart_server.inc
# on slower machines, when we are restarting Master, on slave
# IO thread might have stopped. Restart it.
--disable_result_log
--source include/rpl_connection_slave.inc
--let $slave_io_errno= 2003
--source include/start_slave_io.inc
--enable_result_log
--source include/rpl_connection_master.inc
CALL mtr.add_suppression("An error occurred during sync stage of the commit.");
DROP TABLE t1;
--source include/uninstall_semisync.inc
--source include/rpl_end.inc
|