mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge branch '10.6' into 10.11
This commit is contained in:
@@ -43,8 +43,9 @@ SET SESSION wsrep_sync_wait = 0;
|
||||
SET debug_sync = "now SIGNAL write_row_continue";
|
||||
|
||||
# Let's give the INSERT some time, to make sure it does rollback
|
||||
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO = "INSERT INTO t1 VALUES (1)" AND STATE = "Freeing items";
|
||||
--source include/wait_condition.inc
|
||||
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO = "INSERT INTO t1 VALUES (1)" AND (STATE = "Freeing items" OR STATE = 'Rollback');
|
||||
--let $wait_condition_on_error_output = SELECT INFO, STATE FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
--source include/wait_condition_with_debug.inc
|
||||
|
||||
# Resume the DDL in streaming_rollback
|
||||
SET SESSION debug_sync = "now SIGNAL wsrep_streaming_rollback_continue";
|
||||
|
68
mysql-test/suite/galera_sr/t/galera_sr_bf_abort_idle.test
Normal file
68
mysql-test/suite/galera_sr/t/galera_sr_bf_abort_idle.test
Normal file
@@ -0,0 +1,68 @@
|
||||
#
|
||||
# Test BF abort for idle SR transactions
|
||||
#
|
||||
|
||||
--source include/galera_cluster.inc
|
||||
|
||||
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
||||
|
||||
#
|
||||
# Case 1: BF abort idle SR transaction that has not yet replicated any fragments
|
||||
#
|
||||
--connection node_1
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 INTEGER);
|
||||
INSERT INTO t1 VALUES (1,1),(2,1),(3,1),(4,1),(5,1),(6,1),(7,1),(8,1);
|
||||
|
||||
--let $bf_count = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.global_status WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'`
|
||||
|
||||
SET SESSION wsrep_trx_fragment_size=10;
|
||||
SET SESSION wsrep_trx_fragment_unit='rows';
|
||||
START TRANSACTION;
|
||||
UPDATE t1 SET f2 = f2 + 10;
|
||||
|
||||
--connection node_2
|
||||
INSERT INTO t1 VALUES (10,2);
|
||||
|
||||
# Wait for SR transaction to be BF aborted
|
||||
--connection node_1a
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = $bf_count + 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'
|
||||
--source include/wait_condition.inc
|
||||
|
||||
|
||||
--connection node_1
|
||||
--error ER_LOCK_DEADLOCK
|
||||
INSERT INTO t1 VALUES (9,1);
|
||||
ROLLBACK;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Case 2: BF abort idle SR transaction that has already replicated a fragment
|
||||
#
|
||||
--connection node_1
|
||||
CREATE TABLE t1(f1 INTEGER PRIMARY KEY, f2 INTEGER);
|
||||
INSERT INTO t1 VALUES (1,1),(2,1),(3,1),(4,1),(5,1),(6,1),(7,1),(8,1);
|
||||
|
||||
--let $bf_count = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.global_status WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'`
|
||||
|
||||
|
||||
SET SESSION wsrep_trx_fragment_size=5;
|
||||
SET SESSION wsrep_trx_fragment_unit='rows';
|
||||
START TRANSACTION;
|
||||
UPDATE t1 SET f2 = f2 + 10;
|
||||
|
||||
--connection node_2
|
||||
INSERT INTO t1 VALUES (10,2);
|
||||
|
||||
# Wait for SR transaction to be BF aborted
|
||||
--connection node_1a
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = $bf_count + 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--connection node_1
|
||||
--error ER_LOCK_DEADLOCK
|
||||
INSERT INTO t1 VALUES (9,1);
|
||||
ROLLBACK;
|
||||
|
||||
DROP TABLE t1;
|
Reference in New Issue
Block a user