-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MDEV-33172 : Galera test case galera_mdl_race unstable
Add wait_condition between debug sync SIGNAL points and other expected state conditions and refactor actual sync point for easier to use in test case. Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
- Loading branch information
1 parent
5b4456b
commit ddb27a2
Showing
3 changed files
with
80 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,44 +1,68 @@ | ||
connection node_2; | ||
connection node_1; | ||
connection node_1; | ||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)) engine=innodb; | ||
CREATE TABLE t2 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)) engine=innodb; | ||
INSERT INTO t1 VALUES (1, 'a'); | ||
INSERT INTO t1 VALUES (2, 'a'); | ||
connection node_1; | ||
SET AUTOCOMMIT=ON; | ||
START TRANSACTION; | ||
UPDATE t1 SET f2 = 'b' WHERE f1 = 1; | ||
connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; | ||
connection node_1a; | ||
SET SESSION wsrep_sync_wait=0; | ||
LOCK TABLE t2 WRITE; | ||
connection node_1; | ||
SET @@debug_dbug = "d,sync.wsrep_before_mdl_wait"; | ||
SET DEBUG_SYNC= 'wsrep_before_mdl_wait SIGNAL before_mdl_wait WAIT_FOR mdl_wait_continue'; | ||
SELECT * FROM t2;; | ||
connection node_1a; | ||
# Wait until select is blocked before MDL lock wait | ||
SET DEBUG_SYNC= 'now WAIT_FOR before_mdl_wait'; | ||
connection node_1a; | ||
SET @@debug_dbug = "d,sync.wsrep_after_BF_victim_lock"; | ||
connection node_2; | ||
UPDATE t1 SET f2 = 'c' WHERE f1 = 1; | ||
connection node_1a; | ||
SET @@debug_dbug = ""; | ||
SET DEBUG_SYNC = "now SIGNAL signal.wsrep_before_mdl_wait"; | ||
connect node_1b, 127.0.0.1, root, , test, $NODE_MYPORT_1; | ||
connection node_1b; | ||
SET SESSION wsrep_sync_wait=0; | ||
# Wait for conflicting update to block | ||
SET DEBUG_SYNC = "now SIGNAL signal.wsrep_after_BF_victim_lock"; | ||
connect node_1c, 127.0.0.1, root, , test, $NODE_MYPORT_1; | ||
connection node_1c; | ||
connection node_1a; | ||
SET DEBUG_SYNC = "now SIGNAL BF_victim_continue"; | ||
UNLOCK TABLES; | ||
connection node_1; | ||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction | ||
SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'a'; | ||
COUNT(*) = 1 | ||
connection node_1; | ||
SELECT COUNT(*) AS EXPECT_1 FROM t1 WHERE f2 = 'a'; | ||
EXPECT_1 | ||
1 | ||
SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'c'; | ||
COUNT(*) = 1 | ||
SELECT COUNT(*) AS EXPECT_1 FROM t1 WHERE f2 = 'c'; | ||
EXPECT_1 | ||
1 | ||
SELECT * FROM t1; | ||
f1 f2 | ||
1 c | ||
2 a | ||
connection node_2; | ||
SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'a'; | ||
COUNT(*) = 1 | ||
SELECT COUNT(*) AS EXPECT_1 FROM t1 WHERE f2 = 'a'; | ||
EXPECT_1 | ||
1 | ||
SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'c'; | ||
COUNT(*) = 1 | ||
SELECT COUNT(*) AS EXPECT_1 FROM t1 WHERE f2 = 'c'; | ||
EXPECT_1 | ||
1 | ||
SELECT * FROM t1; | ||
f1 f2 | ||
1 c | ||
2 a | ||
DROP TABLE t1; | ||
DROP TABLE t2; | ||
connection node_1a; | ||
SET DEBUG_SYNC = "RESET"; | ||
connection node_1b; | ||
SET DEBUG_SYNC = "RESET"; | ||
connection node_1; | ||
disconnect node_1a; | ||
disconnect node_1b; | ||
disconnect node_1c; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters