summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVlad Lesin <vlad_lesin@mail.ru>2022-09-01 09:55:49 +0300
committerVlad Lesin <vlad_lesin@mail.ru>2022-09-01 09:55:49 +0300
commitb9e8417f83dede2b8eae09d157557ad0e627e4ea (patch)
treedc57ec989ce5aae1940ecbd73cd32d744267be5a
parent4f2dc716ee95492f58c86e7ee615de55e7ae30f3 (diff)
downloadmariadb-git-bb-10.3-MDEV-29433-lock_delete_updated.tar.gz
MDEV-29433 innodb.lock_delete_updated is unstablebb-10.3-MDEV-29433-lock_delete_updated
Use suspend thread syncpoint instead of include/wait_condition.inc to make sure DELETE created waiting lock before the next UPDATE begins locking.
-rw-r--r--mysql-test/suite/innodb/r/lock_delete_updated.result4
-rw-r--r--mysql-test/suite/innodb/t/lock_delete_updated.test11
2 files changed, 7 insertions, 8 deletions
diff --git a/mysql-test/suite/innodb/r/lock_delete_updated.result b/mysql-test/suite/innodb/r/lock_delete_updated.result
index c2cd47b5dd9..b78cd11fb78 100644
--- a/mysql-test/suite/innodb/r/lock_delete_updated.result
+++ b/mysql-test/suite/innodb/r/lock_delete_updated.result
@@ -1,11 +1,12 @@
CREATE TABLE t(a INT PRIMARY KEY) ENGINE=InnoDB;
INSERT INTO t VALUES (3);
BEGIN;
-connection default;
UPDATE t SET a = 2;
connect con1,localhost,root;
+SET DEBUG_SYNC="lock_wait_suspend_thread_enter SIGNAL del_locked";
DELETE FROM t;
connection default;
+SET DEBUG_SYNC="now WAIT_FOR del_locked";
UPDATE t SET a = 1;
COMMIT;
connection con1;
@@ -17,4 +18,5 @@ connection default;
SELECT count(*) FROM t;
count(*)
1
+SET DEBUG_SYNC="reset";
DROP TABLE t;
diff --git a/mysql-test/suite/innodb/t/lock_delete_updated.test b/mysql-test/suite/innodb/t/lock_delete_updated.test
index 4621d5fcd2b..d543832208e 100644
--- a/mysql-test/suite/innodb/t/lock_delete_updated.test
+++ b/mysql-test/suite/innodb/t/lock_delete_updated.test
@@ -1,23 +1,19 @@
--source include/have_innodb.inc
--source include/count_sessions.inc
+--source include/have_debug_sync.inc
CREATE TABLE t(a INT PRIMARY KEY) ENGINE=InnoDB;
INSERT INTO t VALUES (3);
BEGIN;
-
-connection default;
UPDATE t SET a = 2;
connect con1,localhost,root;
+SET DEBUG_SYNC="lock_wait_suspend_thread_enter SIGNAL del_locked";
send DELETE FROM t;
connection default;
-let $wait_condition=
- select count(*) = 1 from information_schema.processlist
- where state = "Updating" and info = "DELETE FROM t";
---source include/wait_condition.inc
-
+SET DEBUG_SYNC="now WAIT_FOR del_locked";
UPDATE t SET a = 1;
COMMIT;
@@ -30,5 +26,6 @@ connection default;
--echo # The above DELETE must delete all the rows in the table, so the
--echo # following SELECT must show 0 rows.
SELECT count(*) FROM t;
+SET DEBUG_SYNC="reset";
DROP TABLE t;
--source include/wait_until_count_sessions.inc