mirror of
https://github.com/MariaDB/server.git
synced 2025-11-28 17:36:30 +03:00
Merge branch '10.1' into MDEV-15803
This commit is contained in:
@@ -23,10 +23,7 @@ galera_as_slave_replication_bundle : MDEV-13549 Galera test failures
|
||||
galera_gcache_recover : MDEV-13549 Galera test failures
|
||||
galera_gcache_recover_full_gcache : MDEV-13549 Galera test failures
|
||||
galera_gcache_recover_manytrx : MDEV-13549 Galera test failures
|
||||
galera_ist_mysqldump : MDEV-13549 Galera test failures
|
||||
galera_ssl_upgrade : MDEV-13549 Galera test failures
|
||||
galera.MW-329 : wsrep_local_replays not stable
|
||||
galera.MW-328A : have_deadlocks test not stable
|
||||
galera_var_retry_autocommit : MDEV-15794 Test failure on galera.galera_var_retry_autocommit
|
||||
query_cache : MDEV-15805 Test failure on galera.query_cache
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
Setting SST method to mysqldump ...
|
||||
call mtr.add_suppression("WSREP: wsrep_sst_method is set to 'mysqldump' yet mysqld bind_address is set to '127.0.0.1'");
|
||||
call mtr.add_suppression("Failed to load slave replication state from table mysql.gtid_slave_pos");
|
||||
CREATE USER 'sst';
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'sst';
|
||||
SET GLOBAL wsrep_sst_auth = 'sst:';
|
||||
@@ -194,7 +196,7 @@ INSERT INTO t1 VALUES ('node2_committed_before');
|
||||
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||
COMMIT;
|
||||
SET GLOBAL debug = 'd,sync.alter_opened_table';
|
||||
SET GLOBAL debug_dbug = 'd,sync.alter_opened_table';
|
||||
ALTER TABLE t1 ADD COLUMN f2 INTEGER;
|
||||
SET wsrep_sync_wait = 0;
|
||||
Killing server ...
|
||||
@@ -273,6 +275,7 @@ COUNT(*) = 0
|
||||
DROP TABLE t1;
|
||||
COMMIT;
|
||||
SET AUTOCOMMIT=ON;
|
||||
SET GLOBAL debug_dbug = $debug_orig;
|
||||
CALL mtr.add_suppression("Slave SQL: Error 'The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement' on query");
|
||||
DROP USER sst;
|
||||
CALL mtr.add_suppression("Slave SQL: Error 'The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement' on query");
|
||||
|
||||
@@ -1,32 +1,54 @@
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=InnoDB;
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET NEW.f2 = SLEEP(5);
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
|
||||
SET SESSION wsrep_retry_autocommit = 0;
|
||||
INSERT INTO t1 (f1) VALUES (1),(2);;
|
||||
SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue';
|
||||
INSERT INTO t1 (f1) VALUES (2);
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR before_rep';
|
||||
TRUNCATE TABLE t1;
|
||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||
SET SESSION wsrep_retry_autocommit = 1;
|
||||
INSERT INTO t1 (f1) VALUES (3),(4);;
|
||||
TRUNCATE TABLE t1;
|
||||
SELECT * FROM test.t1;
|
||||
f1 f2
|
||||
3 0
|
||||
4 0
|
||||
CREATE PROCEDURE repeated_truncate ()
|
||||
BEGIN
|
||||
DECLARE i INT;
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
|
||||
SET i = 0;
|
||||
WHILE i <= 1000 DO
|
||||
TRUNCATE TABLE t1;
|
||||
SET i = i + 1;
|
||||
END WHILE;
|
||||
END|
|
||||
CALL repeated_truncate();
|
||||
SET SESSION wsrep_retry_autocommit = 1;
|
||||
INSERT INTO t1 (f1) VALUES (5),(6);
|
||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||
SET SESSION wsrep_retry_autocommit = 1024;
|
||||
INSERT INTO t1 (f1) VALUES (7),(8);;
|
||||
include/diff_servers.inc [servers=1 2]
|
||||
SELECT COUNT(*) = 0 FROM t1;
|
||||
COUNT(*) = 0
|
||||
1
|
||||
SET DEBUG_SYNC = 'RESET';
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
|
||||
SET SESSION wsrep_retry_autocommit = 1;
|
||||
SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue';
|
||||
INSERT INTO t1 (f1) VALUES (2);
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR before_rep';
|
||||
TRUNCATE TABLE t1;
|
||||
SELECT COUNT(*) = 1 FROM t1;
|
||||
COUNT(*) = 1
|
||||
1
|
||||
SET DEBUG_SYNC = 'RESET';
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
|
||||
SET SESSION wsrep_retry_autocommit = 1;
|
||||
SET GLOBAL debug_dbug = '+d,sync.wsrep_retry_autocommit';
|
||||
SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue EXECUTE 2';
|
||||
INSERT INTO t1 VALUES (2);;
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR before_rep';
|
||||
TRUNCATE TABLE t1;
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR wsrep_retry_autocommit_reached';
|
||||
SELECT COUNT(*) = 0 FROM t1;
|
||||
COUNT(*) = 0
|
||||
1
|
||||
SET DEBUG_SYNC = 'now SIGNAL wsrep_retry_autocommit_continue WAIT_FOR before_rep';
|
||||
TRUNCATE TABLE t1;
|
||||
SELECT COUNT(*) = 0 FROM t1;
|
||||
COUNT(*) = 0
|
||||
1
|
||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||
SET DEBUG_SYNC = 'RESET';
|
||||
SET GLOBAL debug_dbug = NULL;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
|
||||
SET SESSION wsrep_retry_autocommit = 64;
|
||||
SET GLOBAL debug_dbug = '+d,sync.wsrep_retry_autocommit';
|
||||
SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue EXECUTE 64';
|
||||
INSERT INTO t1 VALUES (2);
|
||||
SELECT COUNT(*) = 1 FROM t1;
|
||||
COUNT(*) = 1
|
||||
1
|
||||
SET DEBUG_SYNC = 'RESET';
|
||||
SET GLOBAL debug_dbug = NULL;
|
||||
DROP TABLE t1;
|
||||
DROP PROCEDURE repeated_truncate;
|
||||
|
||||
@@ -3,6 +3,11 @@
|
||||
--source include/have_innodb.inc
|
||||
--source suite/galera/include/galera_have_debug_sync.inc
|
||||
|
||||
# Save original auto_increment_offset values.
|
||||
--let $node_1=node_1
|
||||
--let $node_2=node_2
|
||||
--source include/auto_increment_offset_save.inc
|
||||
|
||||
# Prepare table
|
||||
CREATE TABLE t1 (f1 INT PRIMARY KEY, f2 TEXT);
|
||||
|
||||
@@ -65,3 +70,5 @@ SELECT * FROM t1;
|
||||
--connection node_1
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--source include/auto_increment_offset_restore.inc
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
|
||||
--source suite/galera/include/galera_sst_set_mysqldump.inc
|
||||
|
||||
--let $node_1=node_1
|
||||
--let $node_2=node_2
|
||||
--source include/auto_increment_offset_save.inc
|
||||
|
||||
# mysql-wsrep#33 - nnoDB: Failing assertion: xid_seqno > trx_sys_cur_xid_seqno in trx_sys_update_wsrep_checkpoint with mysqldump IST
|
||||
# --source suite/galera/include/galera_st_disconnect_slave.inc
|
||||
|
||||
@@ -14,4 +18,5 @@
|
||||
--source suite/galera/include/galera_st_kill_slave.inc
|
||||
--source suite/galera/include/galera_st_kill_slave_ddl.inc
|
||||
|
||||
--source include/auto_increment_offset_restore.inc
|
||||
--source suite/galera/include/galera_sst_restore.inc
|
||||
|
||||
@@ -1,98 +1,141 @@
|
||||
#
|
||||
# Test that the wsrep_retry_autocommit variable is respected. We use an INSERT that
|
||||
# proceeds very slowly due to extra SLEEP() in a trigger
|
||||
# Test that the wsrep_retry_autocommit variable is respected.
|
||||
#
|
||||
|
||||
--source include/galera_cluster.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_debug_sync.inc
|
||||
|
||||
--connection node_1
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=InnoDB;
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET NEW.f2 = SLEEP(5);
|
||||
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
||||
|
||||
#
|
||||
# With wsrep_retry_autocommit = 0, error is certain
|
||||
#
|
||||
|
||||
--connection node_1
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
|
||||
|
||||
SET SESSION wsrep_retry_autocommit = 0;
|
||||
--send INSERT INTO t1 (f1) VALUES (1),(2);
|
||||
SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue';
|
||||
--send INSERT INTO t1 (f1) VALUES (2)
|
||||
|
||||
--connection node_1a
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR before_rep';
|
||||
|
||||
--connection node_2
|
||||
--sleep 1
|
||||
TRUNCATE TABLE t1;
|
||||
|
||||
--connection node_1
|
||||
--error ER_LOCK_DEADLOCK
|
||||
--reap
|
||||
SELECT COUNT(*) = 0 FROM t1;
|
||||
|
||||
SET DEBUG_SYNC = 'RESET';
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# With wsrep_retry_autocommit = 1, success against one TRUNCATE
|
||||
#
|
||||
|
||||
--connection node_1
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
|
||||
|
||||
SET SESSION wsrep_retry_autocommit = 1;
|
||||
--send INSERT INTO t1 (f1) VALUES (3),(4);
|
||||
SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue';
|
||||
--send INSERT INTO t1 (f1) VALUES (2)
|
||||
|
||||
--connection node_1a
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR before_rep';
|
||||
|
||||
--connection node_2
|
||||
--sleep 1
|
||||
TRUNCATE TABLE t1;
|
||||
|
||||
--connection node_1
|
||||
--error 0
|
||||
--reap
|
||||
SELECT * FROM test.t1;
|
||||
|
||||
#
|
||||
# With wsrep_retry_autocommit = 1, failure against multiple TRUNCATEs
|
||||
#
|
||||
|
||||
--connection node_2
|
||||
DELIMITER |;
|
||||
CREATE PROCEDURE repeated_truncate ()
|
||||
BEGIN
|
||||
DECLARE i INT;
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
|
||||
|
||||
SET i = 0;
|
||||
WHILE i <= 1000 DO
|
||||
TRUNCATE TABLE t1;
|
||||
SET i = i + 1;
|
||||
END WHILE;
|
||||
END|
|
||||
DELIMITER ;|
|
||||
|
||||
# Begin streaming TRUNCATEs
|
||||
--let $truncate_connection_id = `SELECT CONNECTION_ID()`
|
||||
--send CALL repeated_truncate()
|
||||
|
||||
--connection node_1
|
||||
SET SESSION wsrep_retry_autocommit = 1;
|
||||
--sleep 1
|
||||
--error ER_LOCK_DEADLOCK
|
||||
INSERT INTO t1 (f1) VALUES (5),(6);
|
||||
|
||||
#
|
||||
# With wsrep_retry_autocommit = 1024, success against multiple TRUNCATEs
|
||||
#
|
||||
|
||||
--connection node_1
|
||||
SET SESSION wsrep_retry_autocommit = 1024;
|
||||
--send INSERT INTO t1 (f1) VALUES (7),(8);
|
||||
|
||||
--sleep 6
|
||||
|
||||
# Once he stream of TRUNCATEs is complete
|
||||
--connection node_2
|
||||
--reap
|
||||
|
||||
# the INSERT will eventually be sucessfull
|
||||
--connection node_1
|
||||
--error 0
|
||||
--reap
|
||||
|
||||
--let $diff_servers = 1 2
|
||||
--source include/diff_servers.inc
|
||||
SELECT COUNT(*) = 1 FROM t1;
|
||||
|
||||
SET DEBUG_SYNC = 'RESET';
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# With wsrep_retry_autcommit = 1, failure against multiple TRUNCATEs
|
||||
#
|
||||
|
||||
--connection node_1
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
|
||||
|
||||
SET SESSION wsrep_retry_autocommit = 1;
|
||||
SET GLOBAL debug_dbug = '+d,sync.wsrep_retry_autocommit';
|
||||
SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue EXECUTE 2';
|
||||
|
||||
--send INSERT INTO t1 VALUES (2);
|
||||
|
||||
--connection node_1a
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR before_rep';
|
||||
|
||||
--connection node_2
|
||||
TRUNCATE TABLE t1;
|
||||
|
||||
--connection node_1a
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR wsrep_retry_autocommit_reached';
|
||||
SELECT COUNT(*) = 0 FROM t1;
|
||||
SET DEBUG_SYNC = 'now SIGNAL wsrep_retry_autocommit_continue WAIT_FOR before_rep';
|
||||
|
||||
--connection node_2
|
||||
TRUNCATE TABLE t1;
|
||||
|
||||
--connection node_1a
|
||||
SELECT COUNT(*) = 0 FROM t1;
|
||||
|
||||
--connection node_1
|
||||
--error ER_LOCK_DEADLOCK
|
||||
--reap
|
||||
|
||||
SET DEBUG_SYNC = 'RESET';
|
||||
SET GLOBAL debug_dbug = NULL;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# With wsrep_retry_autocommit = 64, success against 64 TRUNCATEs
|
||||
#
|
||||
|
||||
--connection node_1
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
|
||||
|
||||
SET SESSION wsrep_retry_autocommit = 64;
|
||||
SET GLOBAL debug_dbug = '+d,sync.wsrep_retry_autocommit';
|
||||
SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue EXECUTE 64';
|
||||
|
||||
--send INSERT INTO t1 VALUES (2)
|
||||
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
--let $count = 64
|
||||
while ($count)
|
||||
{
|
||||
--connection node_1a
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR before_rep';
|
||||
|
||||
--connection node_2
|
||||
TRUNCATE TABLE t1;
|
||||
|
||||
--connection node_1a
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR wsrep_retry_autocommit_reached';
|
||||
SELECT COUNT(*) = 1 FROM t1;
|
||||
SET DEBUG_SYNC = 'now SIGNAL wsrep_retry_autocommit_continue';
|
||||
|
||||
--dec $count
|
||||
}
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
|
||||
--connection node_1
|
||||
--reap
|
||||
SELECT COUNT(*) = 1 FROM t1;
|
||||
|
||||
SET DEBUG_SYNC = 'RESET';
|
||||
SET GLOBAL debug_dbug = NULL;
|
||||
DROP TABLE t1;
|
||||
DROP PROCEDURE repeated_truncate;
|
||||
|
||||
Reference in New Issue
Block a user