1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Fix test failures.

This commit is contained in:
Jan Lindström
2017-08-16 07:49:19 +03:00
parent 5017c261d4
commit 81fd8ff676
7 changed files with 39 additions and 135 deletions

View File

@@ -1,6 +1,7 @@
SET GLOBAL wsrep_provider_options = 'pc.ignore_sb=true'; SET GLOBAL wsrep_provider_options = 'pc.ignore_sb=true';
SET @@global.wsrep_desync = 1; SET @@global.wsrep_desync = 1;
SET SESSION wsrep_dirty_reads=1; SET SESSION wsrep_dirty_reads=1;
SET SESSION wsrep_sync_wait=0;
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1'; SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)); CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1));
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=0'; SET GLOBAL wsrep_provider_options = 'gmcast.isolate=0';

View File

@@ -3,8 +3,11 @@ Suspending node_2 ...
INSERT INTO t1 VALUES (1); INSERT INTO t1 VALUES (1);
Got one of the listed errors Got one of the listed errors
Resuming node_2 ... Resuming node_2 ...
SET SESSION wsrep_sync_wait = 1;
INSERT INTO t1 VALUES (1); INSERT INTO t1 VALUES (1);
SET SESSION wsrep_sync_wait = 1;
SELECT COUNT(*) = 1 FROM t1; SELECT COUNT(*) = 1 FROM t1;
COUNT(*) = 1 COUNT(*) = 1
1 1
SET SESSION wsrep_sync_wait = 15;
DROP TABLE t1; DROP TABLE t1;

View File

@@ -3,10 +3,6 @@ INSERT INTO t1 VALUES(1);
SELECT * FROM t1; SELECT * FROM t1;
i i
1 1
create user user1;
grant all privileges on *.* to user1;
create user user2;
grant all privileges on *.* to user2;
SET @@global.wsrep_cluster_address = ''; SET @@global.wsrep_cluster_address = '';
SET @@session.wsrep_dirty_reads=OFF; SET @@session.wsrep_dirty_reads=OFF;
SET SESSION wsrep_sync_wait=0; SET SESSION wsrep_sync_wait=0;
@@ -18,78 +14,32 @@ Variable_name Value
wsrep_cluster_status non-Primary wsrep_cluster_status non-Primary
SELECT * FROM t1; SELECT * FROM t1;
ERROR 08S01: WSREP has not yet prepared node for application use ERROR 08S01: WSREP has not yet prepared node for application use
SELECT 1 FROM t1;
ERROR 08S01: WSREP has not yet prepared node for application use
SET @@session.wsrep_dirty_reads=ON; SET @@session.wsrep_dirty_reads=ON;
SELECT * FROM t1; SELECT * FROM t1;
i i
1 1
connect con1, localhost, user1,,test,$NODE_MYPORT_2,$NODE_MYSOCK_2; SELECT 1 FROM t1;
SET SESSION wsrep_sync_wait=0; 1
set session wsrep_dirty_reads=1; 1
prepare stmt_show from 'select 1'; SELECT i, variable_name, variable_value FROM t1, information_schema.session_variables WHERE variable_name LIKE "wsrep_dirty_reads" AND i = 1;
prepare stmt_select from 'select * from t1'; i variable_name variable_value
prepare stmt_insert from 'insert into t1 values(1)'; 1 WSREP_DIRTY_READS ON
set session wsrep_dirty_reads=0; SET @@session.wsrep_dirty_reads=OFF;
execute stmt_show; SELECT i, variable_name, variable_value FROM t1, information_schema.session_variables WHERE variable_name LIKE "wsrep_dirty_reads" AND i = 1;
ERROR 08S01: WSREP has not yet prepared node for application use ERROR 08S01: WSREP has not yet prepared node for application use
execute stmt_select; SELECT 1;
ERROR 08S01: WSREP has not yet prepared node for application use ERROR 08S01: WSREP has not yet prepared node for application use
execute stmt_insert; USE information_schema;
ERROR 08S01: WSREP has not yet prepared node for application use ERROR 08S01: WSREP has not yet prepared node for application use
SET wsrep_dirty_reads=ON; SELECT * FROM information_schema.session_variables WHERE variable_name LIKE "wsrep_dirty_reads";
select @@session.wsrep_dirty_reads;
@@session.wsrep_dirty_reads
1
execute stmt_show;
1
1
execute stmt_select;
i
1
execute stmt_insert;
ERROR 08S01: WSREP has not yet prepared node for application use ERROR 08S01: WSREP has not yet prepared node for application use
SET @@global.wsrep_dirty_reads=ON; SELECT COUNT(*) >= 10 FROM performance_schema.events_statements_history;
connect con2, localhost, user2,,test,$NODE_MYPORT_2,$NODE_MYSOCK_2;
select @@session.wsrep_dirty_reads;
@@session.wsrep_dirty_reads
1
prepare stmt_show from 'select 1';
prepare stmt_select from 'select * from t1';
prepare stmt_insert from 'insert into t1 values(1)';
execute stmt_show;
1
1
execute stmt_select;
i
1
execute stmt_insert;
ERROR 08S01: WSREP has not yet prepared node for application use ERROR 08S01: WSREP has not yet prepared node for application use
SET SESSION wsrep_sync_wait=1; USE test;
execute stmt_show;
1
1
execute stmt_select;
i
1
execute stmt_insert;
ERROR 08S01: WSREP has not yet prepared node for application use
SET SESSION wsrep_sync_wait=7;
execute stmt_show;
1
1
execute stmt_select;
i
1
execute stmt_insert;
ERROR 08S01: WSREP has not yet prepared node for application use
connection node_2;
SET @@global.wsrep_dirty_reads=OFF;
connection node_1;
SELECT * FROM t1; SELECT * FROM t1;
i i
1 1
DROP TABLE t1; DROP TABLE t1;
drop user user1;
drop user user2;
disconnect node_2;
disconnect node_1;
# End of test # End of test

View File

@@ -10,6 +10,7 @@ SET GLOBAL wsrep_provider_options = 'pc.ignore_sb=true';
--connection node_2 --connection node_2
SET @@global.wsrep_desync = 1; SET @@global.wsrep_desync = 1;
SET SESSION wsrep_dirty_reads=1; SET SESSION wsrep_dirty_reads=1;
SET SESSION wsrep_sync_wait=0;
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1'; SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
--let $wait_condition = SELECT VARIABLE_VALUE = 'non-Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; --let $wait_condition = SELECT VARIABLE_VALUE = 'non-Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
--source include/wait_condition.inc --source include/wait_condition.inc

View File

@@ -41,6 +41,7 @@ INSERT INTO t1 VALUES (1);
exit(0); exit(0);
EOF EOF
SET SESSION wsrep_sync_wait = 1;
--sleep 10 --sleep 10
--source include/wait_until_ready.inc --source include/wait_until_ready.inc
INSERT INTO t1 VALUES (1); INSERT INTO t1 VALUES (1);
@@ -50,9 +51,11 @@ INSERT INTO t1 VALUES (1);
--source include/galera_connect.inc --source include/galera_connect.inc
--connection node_2a --connection node_2a
SET SESSION wsrep_sync_wait = 1;
--source include/wait_until_ready.inc --source include/wait_until_ready.inc
SELECT COUNT(*) = 1 FROM t1; SELECT COUNT(*) = 1 FROM t1;
SET SESSION wsrep_sync_wait = 15;
DROP TABLE t1; DROP TABLE t1;
# Restore original auto_increment_offset values. # Restore original auto_increment_offset values.

View File

@@ -5,11 +5,6 @@
--source include/galera_cluster.inc --source include/galera_cluster.inc
--source include/have_innodb.inc --source include/have_innodb.inc
# Save original auto_increment_offset values.
--let $node_1=node_1
--let $node_2=node_2
--source include/auto_increment_offset_save.inc
--connection node_2 --connection node_2
--let $wsrep_cluster_address_saved = `SELECT @@global.wsrep_cluster_address` --let $wsrep_cluster_address_saved = `SELECT @@global.wsrep_cluster_address`
@@ -17,15 +12,10 @@ CREATE TABLE t1(i INT) ENGINE=INNODB;
INSERT INTO t1 VALUES(1); INSERT INTO t1 VALUES(1);
SELECT * FROM t1; SELECT * FROM t1;
create user user1;
grant all privileges on *.* to user1;
create user user2;
grant all privileges on *.* to user2;
SET @@global.wsrep_cluster_address = ''; SET @@global.wsrep_cluster_address = '';
SET @@session.wsrep_dirty_reads=OFF; SET @@session.wsrep_dirty_reads=OFF;
# Set wsrep_sync_wait to avoid ER_LOCK_WAIT_TIMEOUT (MDEV-6832). # Set wsrep_sync_wait to avoid ER_LOCK_WAIT_TIMEOUT.
SET SESSION wsrep_sync_wait=0; SET SESSION wsrep_sync_wait=0;
# Must return 'OFF' # Must return 'OFF'
@@ -37,70 +27,32 @@ SHOW STATUS LIKE 'wsrep_cluster_status';
--error ER_UNKNOWN_COM_ERROR --error ER_UNKNOWN_COM_ERROR
SELECT * FROM t1; SELECT * FROM t1;
--error ER_UNKNOWN_COM_ERROR
SELECT 1 FROM t1;
SET @@session.wsrep_dirty_reads=ON; SET @@session.wsrep_dirty_reads=ON;
SELECT * FROM t1; SELECT * FROM t1;
SELECT 1 FROM t1;
--enable_connect_log SELECT i, variable_name, variable_value FROM t1, information_schema.session_variables WHERE variable_name LIKE "wsrep_dirty_reads" AND i = 1;
--connect (con1, localhost, user1,,test,$NODE_MYPORT_2,$NODE_MYSOCK_2)
#Just test the session behavior
SET SESSION wsrep_sync_wait=0;
set session wsrep_dirty_reads=1; SET @@session.wsrep_dirty_reads=OFF;
#Prepared statement creation should be allowed MDEV-11479
prepare stmt_show from 'select 1';
prepare stmt_select from 'select * from t1';
prepare stmt_insert from 'insert into t1 values(1)';
set session wsrep_dirty_reads=0;
#No Preapare stmt/proceure will be allowed
--error ER_UNKNOWN_COM_ERROR --error ER_UNKNOWN_COM_ERROR
execute stmt_show; SELECT i, variable_name, variable_value FROM t1, information_schema.session_variables WHERE variable_name LIKE "wsrep_dirty_reads" AND i = 1;
--error ER_UNKNOWN_COM_ERROR --error ER_UNKNOWN_COM_ERROR
execute stmt_select; SELECT 1;
--error ER_UNKNOWN_COM_ERROR --error ER_UNKNOWN_COM_ERROR
execute stmt_insert; USE information_schema;
SET wsrep_dirty_reads=ON;
select @@session.wsrep_dirty_reads;
#Only prepare statement which does not change data should be allowed
execute stmt_show;
execute stmt_select;
--error ER_UNKNOWN_COM_ERROR --error ER_UNKNOWN_COM_ERROR
execute stmt_insert; SELECT * FROM information_schema.session_variables WHERE variable_name LIKE "wsrep_dirty_reads";
SET @@global.wsrep_dirty_reads=ON;
--connect (con2, localhost, user2,,test,$NODE_MYPORT_2,$NODE_MYSOCK_2)
#Just test the session behavior
select @@session.wsrep_dirty_reads;
prepare stmt_show from 'select 1';
prepare stmt_select from 'select * from t1';
prepare stmt_insert from 'insert into t1 values(1)';
#Only prepare statement which does not change data should be allowed
execute stmt_show;
execute stmt_select;
--error ER_UNKNOWN_COM_ERROR --error ER_UNKNOWN_COM_ERROR
execute stmt_insert; SELECT COUNT(*) >= 10 FROM performance_schema.events_statements_history;
#wsrep_dirty_read should work when wsrep_sync_wait is 1 or non zero
#because we already are disconnected , So It does not make any sense
#to wait for other nodes
SET SESSION wsrep_sync_wait=1;
execute stmt_show;
execute stmt_select;
--error ER_UNKNOWN_COM_ERROR
execute stmt_insert;
SET SESSION wsrep_sync_wait=7;
execute stmt_show;
execute stmt_select;
--error ER_UNKNOWN_COM_ERROR
execute stmt_insert;
--connection node_2
SET @@global.wsrep_dirty_reads=OFF;
--disable_query_log --disable_query_log
--eval SET @@global.wsrep_cluster_address = '$wsrep_cluster_address_saved' --eval SET @@global.wsrep_cluster_address = '$wsrep_cluster_address_saved'
@@ -108,14 +60,10 @@ SET @@global.wsrep_dirty_reads=OFF;
--source include/wait_until_connected_again.inc --source include/wait_until_connected_again.inc
--connection node_1 --connection node_1
USE test;
SELECT * FROM t1; SELECT * FROM t1;
# Cleanup # Cleanup
DROP TABLE t1; DROP TABLE t1;
drop user user1;
drop user user2;
# Restore original auto_increment_offset values.
--source include/auto_increment_offset_restore.inc
--source include/galera_end.inc --source include/galera_end.inc
--echo # End of test --echo # End of test

View File

@@ -34,11 +34,9 @@ SELECT @@session.wsrep_sync_wait;
@@session.wsrep_sync_wait @@session.wsrep_sync_wait
7 7
SET @@session.wsrep_sync_wait=8; SET @@session.wsrep_sync_wait=8;
Warnings:
Warning 1292 Truncated incorrect wsrep_sync_wait value: '8'
SELECT @@session.wsrep_sync_wait; SELECT @@session.wsrep_sync_wait;
@@session.wsrep_sync_wait @@session.wsrep_sync_wait
7 8
# invalid values # invalid values
SET @@global.wsrep_sync_wait=NULL; SET @@global.wsrep_sync_wait=NULL;