Commit 46c27389 authored by Daniele Sciascia's avatar Daniele Sciascia Committed by Jan Lindström

MDEV-23623 - Fix assertion in MTR test galera_sr.GCF-1051

Fix assertion `thd->in_active_multi_stmt_transaction() ||
thd->m_transaction_psi == __null' failed on MTR test
galera_sr.GCF-1051.

Add a new MTR test MDEV-23623 that reproduces the issue
deterministically and update wsrep-lib submodule, containing
the actual fix.
Reviewed-by: default avatarJan Lindström <jan.lindstrom@mariadb.com>
parent 97b10b7f
connection node_2;
connection node_1;
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 CHAR(255)) ENGINE=InnoDB;
INSERT INTO t1 (f2) VALUES ('a');
INSERT INTO t1 (f2) VALUES ('b');
INSERT INTO t1 (f2) VALUES ('c');
connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2;
connection node_2a;
SET SESSION wsrep_sync_wait = 0;
SET GLOBAL wsrep_provider_options = 'dbug=d,after_certify_apply_monitor_enter';
connection node_2;
SET SESSION wsrep_retry_autocommit = 0;
SET SESSION wsrep_trx_fragment_size = 64;
DELETE FROM t1 ORDER BY f1 DESC LIMIT 2;;
connection node_2a;
SET SESSION wsrep_on = 0;
SET SESSION wsrep_on = 1;
connection node_1;
INSERT INTO t1 (f2) VALUES ('d'),('e');
connection node_2a;
SET GLOBAL wsrep_provider_options = 'signal=after_certify_apply_monitor_enter';
SET GLOBAL wsrep_provider_options = 'dbug=';
connection node_2;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
connection node_1;
DROP TABLE t1;
#
# MDEV-23623 - trans_commit_stmt(THD*): Assertion
# `thd->in_active_multi_stmt_transaction() ||
# thd->m_transaction_psi == __null' failed
#
--source include/galera_cluster.inc
--source include/have_debug_sync.inc
--source include/galera_have_debug_sync.inc
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 CHAR(255)) ENGINE=InnoDB;
INSERT INTO t1 (f2) VALUES ('a');
INSERT INTO t1 (f2) VALUES ('b');
INSERT INTO t1 (f2) VALUES ('c');
--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2
--connection node_2a
SET SESSION wsrep_sync_wait = 0;
--let $galera_sync_point = after_certify_apply_monitor_enter
--source include/galera_set_sync_point.inc
--connection node_2
SET SESSION wsrep_retry_autocommit = 0;
SET SESSION wsrep_trx_fragment_size = 64;
--send DELETE FROM t1 ORDER BY f1 DESC LIMIT 2;
--connection node_2a
--source include/galera_wait_sync_point.inc
#
# This is going to cause a certification
# failure on node_2
#
--connection node_1
INSERT INTO t1 (f2) VALUES ('d'),('e');
--connection node_2a
--source include/galera_signal_sync_point.inc
--source include/galera_clear_sync_point.inc
--connection node_2
--error ER_LOCK_DEADLOCK
--reap
#
# Assertion would happen when the following
# DROP TABLE is applied on node_2
#
--connection node_1
DROP TABLE t1;
Subproject commit ae4e58ba031587039c8830f2f8ca51fa9fb7d6eb Subproject commit 2da6e4894e1df5d1db51db2bbc49255e02251b9d
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment