File: MDEV-35446.test

package info (click to toggle)
mariadb 1%3A11.8.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 765,428 kB
  • sloc: ansic: 2,382,827; cpp: 1,803,532; asm: 378,315; perl: 63,176; sh: 46,496; pascal: 40,776; java: 39,363; yacc: 20,428; python: 19,506; sql: 17,864; xml: 12,463; ruby: 8,544; makefile: 6,059; cs: 5,855; ada: 1,700; lex: 1,193; javascript: 1,039; objc: 80; tcl: 73; awk: 46; php: 22
file content (57 lines) | stat: -rw-r--r-- 1,525 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#
# MDEV-35446
#
# Test BF abort of a transaction under PS protocol, after
# a statement is prepared (and the diagnostics area is
# disabled).
#

--source include/have_debug_sync.inc
--source include/galera_cluster.inc

#
# Setup: bf_trx executes in node_1 and will BF abort victim_trx.
#
--connect bf_trx, 127.0.0.1, root, , test, $NODE_MYPORT_1
--connect victim_trx, 127.0.0.1, root, , test, $NODE_MYPORT_2
--connect node_2_ctrl, 127.0.0.1, root, , test, $NODE_MYPORT_2

CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;

--connection victim_trx
START TRANSACTION;
INSERT INTO t1 VALUES (2), (1);

--connection node_2_ctrl
SET GLOBAL debug_dbug = '+d,sync.wsrep_apply_cb';

--connection bf_trx
INSERT INTO t1 VALUES (1), (2);

--connection node_2_ctrl
SET DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET GLOBAL debug_dbug = '';

#
# COMMIT the victim_trx and expect a deadlock error.
# Here we park the client in a sync point at the end of prepare
# command (COM_STMT_PREPARE), where the diagnostics area of the
# client has already been disabled. The client signals the
# applier to continue and will be BF aborted.
# If bug is present, the transaction is aborted, but the COMMIT
# statement succeeds (instead of returning deadlock error).
#
--connection victim_trx

--disable_ps_protocol
SET DEBUG_SYNC = "wsrep_at_dispatch_end_before_result SIGNAL signal.wsrep_apply_cb WAIT_FOR bf_abort";
--enable_ps_protocol

--error ER_LOCK_DEADLOCK
COMMIT;

#
# Cleanup
#
SET DEBUG_SYNC = 'RESET';
DROP TABLE t1;