commit b3fadae2d7c9fc0493e71ba8de0be0ec0b3efd95 Author: Laurynas Biveinis Date: Thu Aug 3 16:07:19 2017 +0300 Fix bug 87303 / LP TODO (innodb_redo_log_encrypt-setting testcases are unstable) Some of the testcases that test innodb_redo_log_encrypt (innodb.log_encrypt_3, innodb.log_encrypt_kill, sys_vars.innodb_redo_log_encrypt_kill) set innodb_redo_log_encrypt to 1, sleep for some time, and expect the InnoDB master thread to have run and reset it back to zero because the server configuration does not support redo log encryption in those test parts. Using the sleep is a poor replacement for test synchronisation as the master thread is not guaranteed to have run on a loaded system. Fix by replacing sleeps with waits until the variable becomes zero. diff --git a/mysql-test/suite/innodb/r/log_encrypt_3.result b/mysql-test/suite/innodb/r/log_encrypt_3.result index 3a6827112a7..555d57eaf29 100644 --- a/mysql-test/suite/innodb/r/log_encrypt_3.result +++ b/mysql-test/suite/innodb/r/log_encrypt_3.result @@ -4,9 +4,6 @@ USE tde_db; SET GLOBAL innodb_redo_log_encrypt = 1; SHOW WARNINGS; Level Code Message -SELECT @@global.innodb_redo_log_encrypt ; -@@global.innodb_redo_log_encrypt -0 CREATE TABLE tde_db.t4 (a BIGINT PRIMARY KEY, b LONGBLOB) ENGINE=InnoDB; INSERT INTO t4 (a, b) VALUES (1, REPEAT('a', 6*512*512)); SELECT a,LEFT(b,10) FROM tde_db.t4; diff --git a/mysql-test/suite/innodb/t/log_encrypt_3.test b/mysql-test/suite/innodb/t/log_encrypt_3.test index 7070545b7df..ac9e0e9b2f4 100644 --- a/mysql-test/suite/innodb/t/log_encrypt_3.test +++ b/mysql-test/suite/innodb/t/log_encrypt_3.test @@ -27,10 +27,11 @@ USE tde_db; # Expected Result : Variable is ignored. # bug : expect warning or error SET GLOBAL innodb_redo_log_encrypt = 1; ---sleep 1 SHOW WARNINGS; -SELECT @@global.innodb_redo_log_encrypt ; +--let $wait_condition=SELECT @@global.innodb_redo_log_encrypt = 0 +--source include/wait_condition.inc + CREATE TABLE tde_db.t4 (a BIGINT PRIMARY KEY, b LONGBLOB) ENGINE=InnoDB; INSERT INTO t4 (a, b) VALUES (1, REPEAT('a', 6*512*512)); SELECT a,LEFT(b,10) FROM tde_db.t4; diff --git a/mysql-test/suite/innodb/t/log_encrypt_kill.test b/mysql-test/suite/innodb/t/log_encrypt_kill.test index ab1f1740f49..5a5627e7e3a 100644 --- a/mysql-test/suite/innodb/t/log_encrypt_kill.test +++ b/mysql-test/suite/innodb/t/log_encrypt_kill.test @@ -24,10 +24,10 @@ let $restart_parameters = restart: --no-console --log-error=$SEARCH_FILE ; SELECT @@global.innodb_redo_log_encrypt ; SET GLOBAL innodb_redo_log_encrypt = 1; SET GLOBAL innodb_undo_log_encrypt = 1; ---sleep 1 -# sleep to get message recorded in error log ---sleep 1 +--let $wait_condition=SELECT @@global.innodb_redo_log_encrypt = 0 +--source include/wait_condition.inc + --error ER_SP_DOES_NOT_EXIST UNINSTALL PLUGIN keyring_file; diff --git a/mysql-test/suite/sys_vars/r/innodb_redo_log_encrypt_basic.result b/mysql-test/suite/sys_vars/r/innodb_redo_log_encrypt_basic.result index d83460faaaa..1338b021d2a 100644 --- a/mysql-test/suite/sys_vars/r/innodb_redo_log_encrypt_basic.result +++ b/mysql-test/suite/sys_vars/r/innodb_redo_log_encrypt_basic.result @@ -23,9 +23,6 @@ select * from performance_schema.session_variables where variable_name='innodb_r VARIABLE_NAME VARIABLE_VALUE innodb_redo_log_encrypt OFF set global innodb_redo_log_encrypt=1; -select @@global.innodb_redo_log_encrypt; -@@global.innodb_redo_log_encrypt -0 select * from performance_schema.global_variables where variable_name='innodb_redo_log_encrypt'; VARIABLE_NAME VARIABLE_VALUE innodb_redo_log_encrypt OFF diff --git a/mysql-test/suite/sys_vars/t/innodb_redo_log_encrypt_basic.test b/mysql-test/suite/sys_vars/t/innodb_redo_log_encrypt_basic.test index 963c7547c43..26a5fe1d1b9 100644 --- a/mysql-test/suite/sys_vars/t/innodb_redo_log_encrypt_basic.test +++ b/mysql-test/suite/sys_vars/t/innodb_redo_log_encrypt_basic.test @@ -24,8 +24,8 @@ select * from performance_schema.session_variables where variable_name='innodb_r # show that it's writable # set global innodb_redo_log_encrypt=1; ---sleep 2 -select @@global.innodb_redo_log_encrypt; +--let $wait_condition=SELECT @@global.innodb_redo_log_encrypt = 0 +--source include/wait_condition.inc --disable_warnings select * from performance_schema.global_variables where variable_name='innodb_redo_log_encrypt'; select * from performance_schema.session_variables where variable_name='innodb_redo_log_encrypt';