committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 347 additions and 149 deletions
-
3configure.cmake
-
4debian/control
-
51mysql-test/r/func_date_add.result
-
24mysql-test/r/func_time.result
-
15mysql-test/r/subselect_mat.result
-
9mysql-test/suite/galera/disabled.def
-
9mysql-test/suite/galera/r/MW-336.result
-
23mysql-test/suite/galera/r/galera_bf_abort_for_update.result
-
1mysql-test/suite/galera/t/MW-286.test
-
19mysql-test/suite/galera/t/MW-336.test
-
45mysql-test/suite/galera/t/galera_bf_abort_for_update.test
-
23mysql-test/suite/rpl/r/rpl_semi_sync_skip_repl.result
-
62mysql-test/suite/rpl/t/rpl_semi_sync_skip_repl.test
-
37mysql-test/t/func_date_add.test
-
16mysql-test/t/func_time.test
-
13mysql-test/t/subselect_mat.test
-
39sql/handler.cc
-
14sql/item_timefunc.cc
-
2sql/log_event.cc
-
4sql/opt_subselect.cc
-
6sql/sql_parse.cc
-
7sql/sql_repl.cc
-
2sql/sql_time.cc
-
2sql/wsrep_mysqld.cc
-
23storage/innobase/fts/fts0fts.cc
-
10storage/innobase/srv/srv0srv.cc
-
23storage/xtradb/fts/fts0fts.cc
-
10storage/xtradb/srv/srv0srv.cc
@ -1,10 +1,21 @@ |
|||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; |
|||
SET AUTOCOMMIT=OFF; |
|||
START TRANSACTION; |
|||
INSERT INTO t1 VALUES (1); |
|||
INSERT INTO t1 VALUES (1); |
|||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 INT) ENGINE=InnoDB; |
|||
INSERT INTO t1 VALUES (1, 10); |
|||
BEGIN; |
|||
SELECT * FROM t1 FOR UPDATE; |
|||
f1 f2 |
|||
1 10 |
|||
UPDATE t1 SET f1 = 2; |
|||
COMMIT; |
|||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction |
|||
wsrep_local_aborts_increment |
|||
wsrep_local_bf_aborts_diff |
|||
1 |
|||
BEGIN; |
|||
SELECT * FROM t1 FOR UPDATE; |
|||
f1 f2 |
|||
2 10 |
|||
UPDATE t1 SET f2 = 20; |
|||
COMMIT; |
|||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction |
|||
wsrep_local_bf_aborts_diff |
|||
1 |
|||
DROP TABLE t1; |
@ -0,0 +1,23 @@ |
|||
include/master-slave.inc |
|||
[connection master] |
|||
call mtr.add_suppression("Timeout waiting for reply of binlog"); |
|||
SET @@GLOBAL.rpl_semi_sync_master_enabled = 1; |
|||
SET @@GLOBAL.rpl_semi_sync_master_timeout=100; |
|||
include/stop_slave.inc |
|||
SET @@GLOBAL.replicate_events_marked_for_skip=FILTER_ON_MASTER; |
|||
SET @@GLOBAL. rpl_semi_sync_slave_enabled = 1; |
|||
include/start_slave.inc |
|||
CREATE TABLE t1 (a INT) ENGINE=innodb; |
|||
SET @@GLOBAL.debug_dbug= "d,dbug_master_binlog_over_2GB"; |
|||
SET @@SESSION.skip_replication=1; |
|||
INSERT INTO t1 SET a=1; |
|||
SET @@SESSION.skip_replication=0; |
|||
INSERT INTO t1 SET a=0; |
|||
SET @@GLOBAL.debug_dbug=""; |
|||
SET @@GLOBAL. rpl_semi_sync_master_timeout = 10000; |
|||
SET @@GLOBAL. rpl_semi_sync_master_enabled = 0; |
|||
DROP TABLE t1; |
|||
include/stop_slave.inc |
|||
SET @@GLOBAL. rpl_semi_sync_slave_enabled = 0; |
|||
SET @@GLOBAL.replicate_events_marked_for_skip = REPLICATE; |
|||
include/rpl_end.inc |
@ -0,0 +1,62 @@ |
|||
# MDEV-14721 Big transaction events get lost on semisync master when |
|||
# replicate_events_marked_for_skip=FILTER_ON_MASTER |
|||
# |
|||
# When events of a big transaction are binlogged offsetting over 2GB from |
|||
# the beginning of the log the semisync master's dump thread |
|||
# lost such events. |
|||
# The test verifies the fixes' correctness simulating the 2GB offset. |
|||
|
|||
source include/have_semisync.inc; |
|||
source include/not_embedded.inc; |
|||
source include/have_innodb.inc; |
|||
source include/have_debug.inc; |
|||
source include/master-slave.inc; |
|||
|
|||
--connection master |
|||
# Suppress warnings that might be generated during the test |
|||
call mtr.add_suppression("Timeout waiting for reply of binlog"); |
|||
|
|||
--let $sav_enabled_master=`SELECT @@GLOBAL.rpl_semi_sync_master_enabled ` |
|||
--let $sav_timeout_master=`SELECT @@GLOBAL.rpl_semi_sync_master_timeout ` |
|||
SET @@GLOBAL.rpl_semi_sync_master_enabled = 1; |
|||
SET @@GLOBAL.rpl_semi_sync_master_timeout=100; |
|||
|
|||
--connection slave |
|||
source include/stop_slave.inc; |
|||
--let $sav_skip_marked_slave=`SELECT @@GLOBAL.replicate_events_marked_for_skip ` |
|||
SET @@GLOBAL.replicate_events_marked_for_skip=FILTER_ON_MASTER; |
|||
--let $sav_enabled_slave=`SELECT @@GLOBAL.rpl_semi_sync_slave_enabled ` |
|||
SET @@GLOBAL. rpl_semi_sync_slave_enabled = 1; |
|||
|
|||
source include/start_slave.inc; |
|||
|
|||
--connection master |
|||
CREATE TABLE t1 (a INT) ENGINE=innodb; |
|||
|
|||
# Make the following events as if they offset over 2GB from the beginning of binlog |
|||
SET @@GLOBAL.debug_dbug= "d,dbug_master_binlog_over_2GB"; |
|||
SET @@SESSION.skip_replication=1; |
|||
INSERT INTO t1 SET a=1; |
|||
SET @@SESSION.skip_replication=0; |
|||
INSERT INTO t1 SET a=0; |
|||
|
|||
--sync_slave_with_master |
|||
|
|||
# |
|||
# Clean up |
|||
# |
|||
--connection master |
|||
SET @@GLOBAL.debug_dbug=""; |
|||
--eval SET @@GLOBAL. rpl_semi_sync_master_timeout = $sav_timeout_master |
|||
--eval SET @@GLOBAL. rpl_semi_sync_master_enabled = $sav_enabled_master |
|||
|
|||
--connection master |
|||
DROP TABLE t1; |
|||
|
|||
--sync_slave_with_master |
|||
source include/stop_slave.inc; |
|||
--eval SET @@GLOBAL. rpl_semi_sync_slave_enabled = $sav_enabled_slave |
|||
--eval SET @@GLOBAL.replicate_events_marked_for_skip = $sav_skip_marked_slave |
|||
|
|||
--let $rpl_only_running_threads= 1 |
|||
--source include/rpl_end.inc |
Write
Preview
Loading…
Cancel
Save
Reference in new issue