File: gr_consistent_reads_after_parallel_stop.result

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (75 lines) | stat: -rw-r--r-- 2,950 bytes parent folder | download
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
include/group_replication.inc
Warnings:
Note	####	Sending passwords in plain text without SSL/TLS is extremely insecure.
Note	####	Storing MySQL user name or password information in the connection metadata repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START REPLICA; see the 'START REPLICA Syntax' in the MySQL Manual for more information.
[connection server1]

############################################################
# 01. Create two tables on the group.
[connection server1]
SET @@SESSION.group_replication_consistency= 'AFTER';
CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY);
CREATE TABLE t2 (c1 INT NOT NULL PRIMARY KEY);

############################################################
# 02. Force server2 to block between T1 prepare and commit.
[connection server_2_1]
SET @@GLOBAL.DEBUG= '+d,group_replication_wait_on_after_applier_prepare';

############################################################
# 03. Execute transaction T1.
[connection server1]
BEGIN;
INSERT INTO t1 VALUES (1);
INSERT INTO t2 VALUES (1);
COMMIT;

############################################################
# 04. Wait for server2 to block between T1 prepare and commit.
[connection server_2_1]
SET DEBUG_SYNC= "now WAIT_FOR signal.after_applier_prepare_waiting";

############################################################
# 05. Stop the plugin on server2.
[connection server_2_1]
SET @@GLOBAL.DEBUG= '+d,group_replication_hold_stop_before_leave_the_group';
STOP GROUP_REPLICATION;
[connection server2]

############################################################
# 06. Execute transaction T2, it will not be allowed to
#     execute since plugin is stopping, otherwise there may
#     be a deadlock on the waiting conditions.
[connection server2]
SELECT * FROM t1;
ERROR HY000: The Group Replication plugin is stopping, therefore new transactions are not allowed to start.

############################################################
# 07. Unblock T1 prepare on server2.
[connection server2]
SET DEBUG_SYNC= 'now SIGNAL signal.after_applier_prepare_continue';
SET @@GLOBAL.DEBUG= '-d,group_replication_wait_on_after_applier_prepare';

############################################################
# 08. Resume the plugin stop.
[connection server2]
SET DEBUG_SYNC= "now SIGNAL signal.resume_stop_before_leave_the_group";
SET @@GLOBAL.DEBUG= '-d,group_replication_hold_stop_before_leave_the_group';
[connection server_2_1]
include/gr_wait_for_member_state.inc
include/assert_and_disable_read_only.inc

############################################################
# 09. Resume transaction T1.
[connection server1]

############################################################
# 10. Clean up.
[connection server1]
SET @@SESSION.group_replication_consistency= DEFAULT;
DROP TABLE t1;
DROP TABLE t2;
[connection server2]
DROP TABLE t1;
DROP TABLE t2;
include/group_replication_end.inc