mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
MDEV-13743: galera_toi_truncate may fail with: query 'reap' succeeded - should have failed with errno 1213
Replace sleep with debug sync point before insert commit to make sure insert is not executed before truncate has started.
This commit is contained in:
parent
16384fae63
commit
c76ee73dc7
2 changed files with 15 additions and 3 deletions
|
@ -2,6 +2,8 @@ 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) ENGINE=InnoDB;
|
||||
SET SESSION wsrep_retry_autocommit = 0;
|
||||
INSERT INTO t1(f1) SELECT 1 FROM ten as a1, ten AS a2;
|
||||
set debug_sync='ha_commit_trans_after_prepare WAIT_FOR go';
|
||||
INSERT INTO t1 (f1) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5, ten AS a6;;
|
||||
TRUNCATE TABLE t1;;
|
||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
|
||||
--source include/galera_cluster.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_debug_sync.inc
|
||||
--source include/not_embedded.inc
|
||||
|
||||
#
|
||||
# INSERT and TRUNCATE on different nodes
|
||||
|
@ -16,14 +18,23 @@ INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
|||
|
||||
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
|
||||
|
||||
# Insert 100K rows
|
||||
# Insert 1m rows
|
||||
--connection node_2
|
||||
--let $wait_condition = SELECT COUNT(*) = 10 FROM ten;
|
||||
--source include/wait_condition.inc
|
||||
|
||||
# Prevent autocommit retring from masking the deadlock error we expect to get
|
||||
SET SESSION wsrep_retry_autocommit = 0;
|
||||
INSERT INTO t1(f1) SELECT 1 FROM ten as a1, ten AS a2;
|
||||
|
||||
set debug_sync='ha_commit_trans_after_prepare WAIT_FOR go';
|
||||
--send INSERT INTO t1 (f1) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5, ten AS a6;
|
||||
|
||||
--connection node_1
|
||||
--sleep 1
|
||||
# Wait for a above insert to start
|
||||
--let $wait_condition = SELECT COUNT(*) >= 100 from t1;
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--send TRUNCATE TABLE t1;
|
||||
|
||||
--connection node_1
|
||||
|
@ -38,6 +49,5 @@ SELECT COUNT(*) = 0 FROM t1;
|
|||
|
||||
--connection node_1
|
||||
SELECT COUNT(*) = 0 FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE ten;
|
||||
|
|
Loading…
Reference in a new issue