Skip to content

WIP: #446

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: 11.6
Choose a base branch
from
Open

WIP: #446

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cmake/wsrep.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ Then restart the build.
"Disable building dbsim for wsrep-lib")
endif()
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/wsrep-lib/include)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/wsrep-lib/wsrep-API)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/wsrep-lib/wsrep-API/v26)

SET(old_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
Expand Down
75 changes: 75 additions & 0 deletions mysql-test/suite/galera_3nodes/r/galera_connections.result
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
connection node_2;
connection node_1;
connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3;
connection node_3;
connection node_1;
connection node_1;
connection node_2;
connection node_3;
connection node_1;
CREATE TABLE t1(a int not null primary key) engine=innodb;
INSERT INTO t1 VALUES (1),(2),(3),(4);
connection node_2;
SELECT * FROM t1;
a
1
2
3
4
connection node_3;
SELECT * from t1;
a
1
2
3
4
connection node_1;
SHOW CREATE TABLE INFORMATION_SCHEMA.WSREP_CONNECTIONS;
Table Create Table
wsrep_connections CREATE TEMPORARY TABLE `wsrep_connections` (
`connection_id` bigint(21) unsigned NOT NULL,
`connection_scheme` varchar(3) NOT NULL,
`local_address` varchar(256) NOT NULL,
`remote_uuid` varchar(256) NOT NULL,
`remote_address` varchar(256) NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS,mysql.wsrep_cluster_members WHERE REMOTE_UUID = NODE_UUID;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_3 FROM mysql.wsrep_cluster_members;
EXPECT_3
3
connection node_2;
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS,mysql.wsrep_cluster_members WHERE REMOTE_UUID = NODE_UUID;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_3 FROM mysql.wsrep_cluster_members;
EXPECT_3
3
connection node_3;
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS,mysql.wsrep_cluster_members WHERE REMOTE_UUID = NODE_UUID;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_3 FROM mysql.wsrep_cluster_members;
EXPECT_3
3
connection node_1;
DROP TABLE t1;
126 changes: 126 additions & 0 deletions mysql-test/suite/galera_3nodes/r/galera_connections_ist.result
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
connection node_2;
connection node_1;
connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3;
connection node_3;
connection node_1;
connection node_1;
connection node_2;
connection node_3;
connection node_1;
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1));
INSERT INTO t1 VALUES (1, 'a'), (2, 'a'), (3, 'a'), (4, 'a'), (5, 'a'),(6, 'a');
connection node_2;
SELECT * FROM t1;
f1 f2
1 a
2 a
3 a
4 a
5 a
6 a
connection node_3;
SELECT * from t1;
f1 f2
1 a
2 a
3 a
4 a
5 a
6 a
connection node_1;
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
EXPECT_2
2
# Disconnect node_2
connection node_2;
SET SESSION wsrep_sync_wait=0;
Unloading wsrep provider ...
SET GLOBAL wsrep_cluster_address = '';
connection node_1;
UPDATE t1 SET f2 = 'b' WHERE f1 > 1;
# We should now have only 1 connection
SELECT COUNT(*) AS EXPECT_1 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
EXPECT_1
1
SELECT COUNT(*) AS EXPECT_1 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
EXPECT_1
1
connection node_3;
# We should now have only 1 connection
SELECT COUNT(*) AS EXPECT_1 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
EXPECT_1
1
SELECT COUNT(*) AS EXPECT_1 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
EXPECT_1
1
connection node_1;
UPDATE t1 SET f2 = 'c' WHERE f1 > 2;
connection node_2;
Loading wsrep_provider ...
SET SESSION wsrep_on = 0;
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
connection node_1;
UPDATE t1 SET f2 = 'd' WHERE f1 > 3;
# We should see IST connection
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
EXPECT_2
2
connection node_2;
SET GLOBAL wsrep_provider_options = 'signal=recv_IST_after_apply_trx';
connection node_1;
connection node_1;
SELECT * FROM t1;
f1 f2
1 a
2 b
3 c
4 d
5 d
6 d
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
EXPECT_2
2
connection node_2;
SELECT * FROM t1;
f1 f2
1 a
2 b
3 c
4 d
5 d
6 d
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
EXPECT_2
2
connection node_3;
SELECT * FROM t1;
f1 f2
1 a
2 b
3 c
4 d
5 d
6 d
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
EXPECT_2
2
connection node_1;
DROP TABLE t1;
disconnect node_2;
disconnect node_1;
84 changes: 84 additions & 0 deletions mysql-test/suite/galera_3nodes/r/galera_connections_ssl.result
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
connection node_2;
connection node_1;
connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3;
connection node_3;
connection node_1;
connection node_1;
connection node_2;
connection node_3;
connection node_1;
CREATE TABLE t1(a int not null primary key) engine=innodb;
INSERT INTO t1 VALUES (1),(2),(3),(4);
connection node_2;
SELECT * FROM t1;
a
1
2
3
4
connection node_3;
SELECT * from t1;
a
1
2
3
4
connection node_1;
SHOW CREATE TABLE INFORMATION_SCHEMA.WSREP_CONNECTIONS;
Table Create Table
wsrep_connections CREATE TEMPORARY TABLE `wsrep_connections` (
`connection_id` bigint(21) unsigned NOT NULL,
`connection_scheme` varchar(3) NOT NULL,
`local_address` varchar(256) NOT NULL,
`remote_uuid` varchar(256) NOT NULL,
`remote_address` varchar(256) NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='ssl';
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_0 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
EXPECT_0
0
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS,mysql.wsrep_cluster_members WHERE REMOTE_UUID = NODE_UUID;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_3 FROM mysql.wsrep_cluster_members;
EXPECT_3
3
connection node_2;
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='ssl';
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_0 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
EXPECT_0
0
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS,mysql.wsrep_cluster_members WHERE REMOTE_UUID = NODE_UUID;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_3 FROM mysql.wsrep_cluster_members;
EXPECT_3
3
connection node_3;
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='ssl';
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_0 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
EXPECT_0
0
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS,mysql.wsrep_cluster_members WHERE REMOTE_UUID = NODE_UUID;
EXPECT_2
2
SELECT COUNT(*) AS EXPECT_3 FROM mysql.wsrep_cluster_members;
EXPECT_3
3
connection node_1;
DROP TABLE t1;
5 changes: 5 additions & 0 deletions mysql-test/suite/galera_3nodes/t/galera_connections.cnf
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
!include ../galera_3nodes.cnf

[mysqld]
sql-safe-updates=1
wsrep-debug=1
59 changes: 59 additions & 0 deletions mysql-test/suite/galera_3nodes/t/galera_connections.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
--source include/galera_cluster.inc

--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3
--connection node_3
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'
--source include/wait_condition.inc

--connection node_1
# Save original auto_increment_offset values.
--let $node_1=node_1
--let $node_2=node_2
--let $node_3=node_3
--source ../galera/include/auto_increment_offset_save.inc

--connection node_1
CREATE TABLE t1(a int not null primary key) engine=innodb;
INSERT INTO t1 VALUES (1),(2),(3),(4);

--connection node_2
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 4 FROM test.t1;
--source include/wait_condition.inc
SELECT * FROM t1;

--connection node_3
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 4 FROM test.t1;
--source include/wait_condition.inc
SELECT * from t1;

#
# Table contents is not deterministic only number of connections is
#
--connection node_1
SHOW CREATE TABLE INFORMATION_SCHEMA.WSREP_CONNECTIONS;
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
#
# Two of the connections should be from exactly same node as in cluster members table, one is naturally this node
#
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS,mysql.wsrep_cluster_members WHERE REMOTE_UUID = NODE_UUID;
SELECT COUNT(*) AS EXPECT_3 FROM mysql.wsrep_cluster_members;

--connection node_2
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS,mysql.wsrep_cluster_members WHERE REMOTE_UUID = NODE_UUID;
SELECT COUNT(*) AS EXPECT_3 FROM mysql.wsrep_cluster_members;

--connection node_3
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS;
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS WHERE CONNECTION_SCHEME='tcp';
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.WSREP_CONNECTIONS,mysql.wsrep_cluster_members WHERE REMOTE_UUID = NODE_UUID;
SELECT COUNT(*) AS EXPECT_3 FROM mysql.wsrep_cluster_members;

--connection node_1
DROP TABLE t1;
Loading