Commit db9622f1 authored by Jan Lindström's avatar Jan Lindström

MDEV-19405: Galera test failure on galera_parallel_autoinc_largetrx

Test case was not stable. Fixed also galera_parallel_autoinc_manytrx
as it has the same problem.
parent 0573744a
CREATE TABLE ten (f1 INTEGER); CREATE TABLE ten (f1 INTEGER) Engine=InnoDB;
INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) Engine=InnoDB; CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) Engine=InnoDB;
set session wsrep_sync_wait=15;
SET GLOBAL wsrep_slave_threads = 4; SET GLOBAL wsrep_slave_threads = 4;
INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4;; INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4;;
INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4;; INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4;;
INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4;; INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4;;
SELECT COUNT(*) = 30000 FROM t1; SELECT COUNT(*) FROM t1;
COUNT(*) = 30000 COUNT(*)
1 30000
SELECT COUNT(DISTINCT f1) = 30000 FROM t1; SELECT COUNT(DISTINCT f1) FROM t1;
COUNT(DISTINCT f1) = 30000 COUNT(DISTINCT f1)
1 30000
SELECT COUNT(*) = 5 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user';
COUNT(*) = 5
1
DROP TABLE t1; DROP TABLE t1;
DROP TABLE ten; DROP TABLE ten;
CREATE TABLE ten (f1 INTEGER); CREATE TABLE ten (f1 INTEGER) Engine=InnoDB;
INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) Engine=InnoDB; CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) Engine=InnoDB;
set session wsrep_sync_wait=15;
SET GLOBAL wsrep_slave_threads = 4; SET GLOBAL wsrep_slave_threads = 4;
SELECT COUNT(*) = 20000 FROM t1; CREATE PROCEDURE p1 (repeat_count int)
COUNT(*) = 20000 BEGIN
1 DECLARE current_num int;
SELECT COUNT(DISTINCT f1) = 20000 FROM t1; SET current_num = 0;
COUNT(DISTINCT f1) = 20000 WHILE current_num < repeat_count do
1 INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1;
SELECT COUNT(*) = 4 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND STATE LIKE 'committed%'; COMMIT;
COUNT(*) = 4 SET current_num = current_num + 1;
1 END WHILE;
END|
SELECT COUNT(*) FROM t1;
COUNT(*)
40000
SELECT COUNT(DISTINCT f1) FROM t1;
COUNT(DISTINCT f1)
40000
DROP TABLE t1; DROP TABLE t1;
DROP TABLE ten; DROP TABLE ten;
DROP PROCEDURE p1;
...@@ -12,13 +12,18 @@ ...@@ -12,13 +12,18 @@
--source include/galera_connect.inc --source include/galera_connect.inc
--connection node_1 --connection node_1
CREATE TABLE ten (f1 INTEGER); CREATE TABLE ten (f1 INTEGER) Engine=InnoDB;
INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) Engine=InnoDB; CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) Engine=InnoDB;
--connection node_2 --connection node_2
set session wsrep_sync_wait=15;
--let $wsrep_slave_threads_orig = `SELECT @@wsrep_slave_threads` --let $wsrep_slave_threads_orig = `SELECT @@wsrep_slave_threads`
SET GLOBAL wsrep_slave_threads = 4; SET GLOBAL wsrep_slave_threads = 4;
--let $wait_condition = SELECT COUNT(*) = @@wsrep_slave_threads + 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND (STATE IS NULL OR STATE NOT LIKE 'InnoDB%');
--source include/wait_condition.inc
--connection node_1 --connection node_1
--send INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4; --send INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4;
...@@ -37,9 +42,9 @@ SET GLOBAL wsrep_slave_threads = 4; ...@@ -37,9 +42,9 @@ SET GLOBAL wsrep_slave_threads = 4;
--connection node_2 --connection node_2
--reap --reap
SELECT COUNT(*) = 30000 FROM t1; --disconnect node_1a
SELECT COUNT(DISTINCT f1) = 30000 FROM t1; SELECT COUNT(*) FROM t1;
SELECT COUNT(*) = 5 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user'; SELECT COUNT(DISTINCT f1) FROM t1;
--disable_query_log --disable_query_log
--eval SET GLOBAL wsrep_slave_threads = $wsrep_slave_threads_orig; --eval SET GLOBAL wsrep_slave_threads = $wsrep_slave_threads_orig;
......
...@@ -6,43 +6,78 @@ ...@@ -6,43 +6,78 @@
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/big_test.inc --source include/big_test.inc
# Create a second connection to node1 so that we can run transactions concurrently --connection node_1
CREATE TABLE ten (f1 INTEGER) Engine=InnoDB;
INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) Engine=InnoDB;
# Create few connections to node1 so that we can run transactions concurrently
--let $galera_connection_name = node_1a --let $galera_connection_name = node_1a
--let $galera_server_number = 1 --let $galera_server_number = 1
--source include/galera_connect.inc --source include/galera_connect.inc
--connection node_1 --let $galera_connection_name = node_1b
CREATE TABLE ten (f1 INTEGER); --let $galera_server_number = 1
INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); --source include/galera_connect.inc
CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) Engine=InnoDB;
--connection node_2 --connection node_2
set session wsrep_sync_wait=15;
--let $wsrep_slave_threads_orig = `SELECT @@wsrep_slave_threads` --let $wsrep_slave_threads_orig = `SELECT @@wsrep_slave_threads`
SET GLOBAL wsrep_slave_threads = 4; SET GLOBAL wsrep_slave_threads = 4;
--let $wait_condition = SELECT COUNT(*) = @@wsrep_slave_threads + 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND (STATE IS NULL OR STATE NOT LIKE 'InnoDB%');
--source include/wait_condition.inc
--connection node_1
DELIMITER |;
CREATE PROCEDURE p1 (repeat_count int)
BEGIN
DECLARE current_num int;
SET current_num = 0;
WHILE current_num < repeat_count do
INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1;
COMMIT;
SET current_num = current_num + 1;
END WHILE;
END|
DELIMITER ;|
--disable_query_log
send call p1(1000);
--connection node_1a
--disable_query_log
send call p1(1000);
--connection node_1b
--disable_query_log
send call p1(1000);
--connection node_2
--disable_query_log
send call p1(1000);
--connection node_1 --connection node_1
--let $count = 1000 reap;
while ($count) --enable_query_log
{
--disable_query_log --connection node_1a
INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1; reap;
--enable_query_log --enable_query_log
--dec $count
} --connection node_1b
reap;
--enable_query_log
--connection node_2 --connection node_2
--let $count = 1000 reap;
while ($count) --enable_query_log
{
--disable_query_log SELECT COUNT(*) FROM t1;
INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1; SELECT COUNT(DISTINCT f1) FROM t1;
--enable_query_log
--dec $count --disconnect node_1a
} --disconnect node_1b
SELECT COUNT(*) = 20000 FROM t1;
SELECT COUNT(DISTINCT f1) = 20000 FROM t1;
SELECT COUNT(*) = 4 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND STATE LIKE 'committed%';
--disable_query_log --disable_query_log
--eval SET GLOBAL wsrep_slave_threads = $wsrep_slave_threads_orig; --eval SET GLOBAL wsrep_slave_threads = $wsrep_slave_threads_orig;
...@@ -51,4 +86,6 @@ SELECT COUNT(*) = 4 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system use ...@@ -51,4 +86,6 @@ SELECT COUNT(*) = 4 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system use
--connection default --connection default
DROP TABLE t1; DROP TABLE t1;
DROP TABLE ten; DROP TABLE ten;
DROP PROCEDURE p1;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment