diff options
author | Daniele Sciascia <daniele.sciascia@galeracluster.com> | 2020-03-20 06:26:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-20 07:26:46 +0200 |
commit | fcc0b89d521a6aa7c11d1762e64ecd79fe2b2aa9 (patch) | |
tree | af1dc93a5eb33856d062d2e077ef4884d7516399 /mysql-test | |
parent | 6297a1026db4032ab7b7e28788d0b5b9a1f32aa3 (diff) | |
download | mariadb-git-fcc0b89d521a6aa7c11d1762e64ecd79fe2b2aa9.tar.gz |
Fix MTR test galera_3nodes_sr.galera_vote_sr (#1439)
A large INSERT would occasionally fail with a deadlock error. This
is due to a limitation in galera library: large writesets that are
internally fragmented (> 32KB), may fail to replicate during a
configuration change. Even if the configuration change is from primary
to primary.
Changed the test to reduce writeset sizes from ~65K to ~16K.
Diffstat (limited to 'mysql-test')
3 files changed, 47 insertions, 44 deletions
diff --git a/mysql-test/suite/galera_3nodes_sr/r/galera_vote_sr.result b/mysql-test/suite/galera_3nodes_sr/r/galera_vote_sr.result index 14a6de56139..678cfe4c3a7 100644 --- a/mysql-test/suite/galera_3nodes_sr/r/galera_vote_sr.result +++ b/mysql-test/suite/galera_3nodes_sr/r/galera_vote_sr.result @@ -14,23 +14,23 @@ SET SESSION wsrep_on=ON; DELETE FROM t1 WHERE f1 = 2; connection node_1; SET AUTOCOMMIT=OFF; -SET SESSION wsrep_trx_fragment_size = 131070; +SET SESSION wsrep_trx_fragment_size = 16384; START TRANSACTION; -INSERT INTO t1 VALUES (1, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (2, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (3, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (4, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (5, REPEAT('A', 65535)); +INSERT INTO t1 VALUES (1, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (2, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (3, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (4, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (5, REPEAT('A', 16384)); COMMIT; SELECT COUNT(*) AS expect_0 FROM mysql.wsrep_streaming_log; expect_0 0 START TRANSACTION; -INSERT INTO t1 VALUES (11, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (12, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (13, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (14, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (15, REPEAT('A', 65535)); +INSERT INTO t1 VALUES (11, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (12, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (13, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (14, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (15, REPEAT('A', 16384)); connection node_2; SET SESSION wsrep_on=OFF; Starting mysqld @@ -75,23 +75,23 @@ SET SESSION wsrep_on=ON; DELETE FROM t1 WHERE f1 = 2; connection node_1; SET AUTOCOMMIT=OFF; -SET SESSION wsrep_trx_fragment_size = 131070; +SET SESSION wsrep_trx_fragment_size = 16384; START TRANSACTION; -INSERT INTO t1 VALUES (1, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (2, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (3, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (4, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (5, REPEAT('A', 65535)); +INSERT INTO t1 VALUES (1, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (2, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (3, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (4, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (5, REPEAT('A', 16384)); COMMIT; SELECT COUNT(*) AS expect_0 FROM mysql.wsrep_streaming_log; expect_0 0 START TRANSACTION; -INSERT INTO t1 VALUES (11, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (12, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (13, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (14, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (15, REPEAT('A', 65535)); +INSERT INTO t1 VALUES (11, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (12, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (13, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (14, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (15, REPEAT('A', 16384)); connection node_2; SET SESSION wsrep_on=OFF; Starting mysqld @@ -136,23 +136,23 @@ SET SESSION wsrep_on=ON; DELETE FROM t1 WHERE f1 = 2; connection node_1; SET AUTOCOMMIT=OFF; -SET SESSION wsrep_trx_fragment_size = 131070; +SET SESSION wsrep_trx_fragment_size = 16384; START TRANSACTION; -INSERT INTO t1 VALUES (1, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (2, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (3, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (4, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (5, REPEAT('A', 65535)); +INSERT INTO t1 VALUES (1, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (2, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (3, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (4, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (5, REPEAT('A', 16384)); COMMIT; SELECT COUNT(*) AS expect_0 FROM mysql.wsrep_streaming_log; expect_0 0 START TRANSACTION; -INSERT INTO t1 VALUES (11, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (12, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (13, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (14, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (15, REPEAT('A', 65535)); +INSERT INTO t1 VALUES (11, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (12, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (13, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (14, REPEAT('A', 16384)); +INSERT INTO t1 VALUES (15, REPEAT('A', 16384)); connection node_2; SET SESSION wsrep_on=OFF; Starting mysqld @@ -194,3 +194,4 @@ CALL mtr.add_suppression("Slave SQL: Could not execute Write_rows event on table CALL mtr.add_suppression("Write_rows_v1 apply failed"); CALL mtr.add_suppression("Inconsistent by consensus"); CALL mtr.add_suppression("WSREP: Failed to apply write set: "); +CALL mtr.add_suppression("WSREP: Failed to report last committed"); diff --git a/mysql-test/suite/galera_3nodes_sr/t/galera_vote_sr.inc b/mysql-test/suite/galera_3nodes_sr/t/galera_vote_sr.inc index db6ba458379..776291cc9c0 100644 --- a/mysql-test/suite/galera_3nodes_sr/t/galera_vote_sr.inc +++ b/mysql-test/suite/galera_3nodes_sr/t/galera_vote_sr.inc @@ -15,25 +15,26 @@ DELETE FROM t1 WHERE f1 = 2; # Perform an SR transaction that will hit the inconsistency --connection node_1 +--let $fragment_size = 16384 SET AUTOCOMMIT=OFF; -SET SESSION wsrep_trx_fragment_size = 131070; +--eval SET SESSION wsrep_trx_fragment_size = $fragment_size START TRANSACTION; -INSERT INTO t1 VALUES (1, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (2, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (3, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (4, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (5, REPEAT('A', 65535)); +--eval INSERT INTO t1 VALUES (1, REPEAT('A', $fragment_size)) +--eval INSERT INTO t1 VALUES (2, REPEAT('A', $fragment_size)) +--eval INSERT INTO t1 VALUES (3, REPEAT('A', $fragment_size)) +--eval INSERT INTO t1 VALUES (4, REPEAT('A', $fragment_size)) +--eval INSERT INTO t1 VALUES (5, REPEAT('A', $fragment_size)) COMMIT; SELECT COUNT(*) AS expect_0 FROM mysql.wsrep_streaming_log; # Perform another SR transaction in order to have stuff in the # wsrep_streaming_log table START TRANSACTION; -INSERT INTO t1 VALUES (11, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (12, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (13, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (14, REPEAT('A', 65535)); -INSERT INTO t1 VALUES (15, REPEAT('A', 65535)); +--eval INSERT INTO t1 VALUES (11, REPEAT('A', $fragment_size)) +--eval INSERT INTO t1 VALUES (12, REPEAT('A', $fragment_size)) +--eval INSERT INTO t1 VALUES (13, REPEAT('A', $fragment_size)) +--eval INSERT INTO t1 VALUES (14, REPEAT('A', $fragment_size)) +--eval INSERT INTO t1 VALUES (15, REPEAT('A', $fragment_size)) # Node #2 has dropped from the cluster due to voting --let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; diff --git a/mysql-test/suite/galera_3nodes_sr/t/galera_vote_sr.test b/mysql-test/suite/galera_3nodes_sr/t/galera_vote_sr.test index ad9fdb59534..bae7d851a71 100644 --- a/mysql-test/suite/galera_3nodes_sr/t/galera_vote_sr.test +++ b/mysql-test/suite/galera_3nodes_sr/t/galera_vote_sr.test @@ -33,6 +33,7 @@ CALL mtr.add_suppression("Write_rows_v1 apply failed"); CALL mtr.add_suppression("Inconsistent by consensus"); CALL mtr.add_suppression("WSREP: Failed to apply write set: "); #CALL mtr.add_suppression("no THD for trx"); +CALL mtr.add_suppression("WSREP: Failed to report last committed"); # Restore original auto_increment_offset values. --source ../galera/include/auto_increment_offset_restore.inc |