File: gr_consistent_reads_member_unreachable.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 (98 lines) | stat: -rw-r--r-- 3,778 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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
include/group_replication.inc [rpl_server_count=3]
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. Increase the expel timeout.
[connection server1]
SET GLOBAL group_replication_member_expel_timeout = 300;
SELECT @@GLOBAL.group_replication_member_expel_timeout;
@@GLOBAL.group_replication_member_expel_timeout
300
[connection server2]
SET GLOBAL group_replication_member_expel_timeout = 300;
SELECT @@GLOBAL.group_replication_member_expel_timeout;
@@GLOBAL.group_replication_member_expel_timeout
300
[connection server3]
SET GLOBAL group_replication_member_expel_timeout = 300;
SELECT @@GLOBAL.group_replication_member_expel_timeout;
@@GLOBAL.group_replication_member_expel_timeout
300
SET SESSION sql_log_bin = 0;
CREATE TABLE pid_table(pid_no INT PRIMARY KEY);
LOAD DATA LOCAL INFILE 'pid_file' INTO TABLE pid_table;
DROP TABLE pid_table;
SET SESSION sql_log_bin = 1;

############################################################
# 02. Create a table on the group.
[connection server1]
CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY);
[connection server1]
[connection server2]
[connection server3]

############################################################
# 03. Make server 3 block before send its prepare message.
#     This will allow us to deterministically make it
#     UNREACHABLE while others are waiting for its acknowledge.
[connection server3]
SET @@GLOBAL.DEBUG= '+d,group_replication_wait_before_message_send_after_applier_prepare';

############################################################
# 04. Execute T1 on server1.
[connection server1]
INSERT INTO t1 VALUES (1);

############################################################
# 05. Wait until T1 is prepared on server3.
[connection server3]
SET DEBUG_SYNC= "now WAIT_FOR signal.after_before_message_send_after_applier_prepare_waiting";

############################################################
# 06. Make server 3 UNREACHABLE.
[connection server_3]
[connection server_1]
include/gr_wait_for_member_state.inc
[connection server2]
include/gr_wait_for_member_state.inc

############################################################
# 07. server 1 and 2 are waiting for the acknowledges, they
#     will not proceed until server3 acknowledges or leaves
#     the group.
[connection server_1]
[connection server2]

############################################################
# 08. Make server 3 ONLINE.
[connection server_3]
[connection server_1]
include/gr_wait_for_member_state.inc
[connection server2]
include/gr_wait_for_member_state.inc

############################################################
# 09. Unblock T1 prepare on server3.
[connection server3]
SET DEBUG_SYNC= 'now SIGNAL signal.after_before_message_send_after_applier_prepare_continue';
SET @@GLOBAL.DEBUG= '-d,group_replication_wait_before_message_send_after_applier_prepare';

############################################################
# 10. T1 is committed on all servers.
[connection server1]
include/assert.inc ['There is 1 value in table t1']
[connection server2]
include/assert.inc ['There is 1 value in table t1']
[connection server3]
include/assert.inc ['There is 1 value in table t1']
include/diff_tables.inc [server1:t1, server2:t1, server3:t1]

############################################################
# 11. Clean up.
[connection server1]
DROP TABLE t1;
include/group_replication_end.inc