summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniele Sciascia <daniele.sciascia@galeracluster.com>2018-04-20 14:44:27 +0200
committerDaniele Sciascia <daniele.sciascia@galeracluster.com>2018-04-20 14:44:27 +0200
commit9e5671f1cc190f9b9498eafcf858460a56ff3a38 (patch)
treeee5c69fb52fd77a87d12211dbfbad0e07b9a9f14
parent3d1ad2a5e85284b5ec4bb28f744b93b0b73e3934 (diff)
downloadmariadb-git-9e5671f1cc190f9b9498eafcf858460a56ff3a38.tar.gz
MDEV-15948 Fix error "Lost connection to MySQL server..." in test galera_sst_mysqldump
Test galera_sst_mysqldump often fails with error "2013: Lost connection to MySQL server during query". The connection is lost after the test restart one of the nodes. This happens because the server closes client connections if it is joining a cluster through SST method mysqldump. On unlucky runs of the test it is possible that mysqld is restarted, and then mtr client is disconnected while it tries to determine if galera is ready before going on with the test. This patch rewrites galera_wait_ready.inc so that it is immune to being disconnected.
-rw-r--r--mysql-test/include/galera_wait_ready.inc34
-rw-r--r--mysql-test/suite/galera/include/galera_load_provider.inc4
-rw-r--r--mysql-test/suite/galera/include/start_mysqld.inc9
3 files changed, 34 insertions, 13 deletions
diff --git a/mysql-test/include/galera_wait_ready.inc b/mysql-test/include/galera_wait_ready.inc
index e20f01fad90..cd06bae8207 100644
--- a/mysql-test/include/galera_wait_ready.inc
+++ b/mysql-test/include/galera_wait_ready.inc
@@ -1,2 +1,32 @@
-let $wait_condition = SELECT 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_ready' AND VARIABLE_VALUE = 'ON';
---source include/wait_condition.inc
+# include/galera_wait_ready.inc
+#
+# Waits for galera node to transition to READY state.
+#
+
+--enable_reconnect
+--disable_query_log
+--disable_result_log
+let $wait_counter = 300;
+while ($wait_counter)
+{
+ --disable_abort_on_error
+ let $success = `SELECT VARIABLE_VALUE = 'ON' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_ready'`;
+ --enable_abort_on_error
+ if ($success)
+ {
+ let $wait_counter = 0;
+ }
+ if (!$success)
+ {
+ real_sleep 0.1;
+ dec $wait_counter;
+ }
+}
+
+if (!$success)
+{
+ die "Server did not transition to READY state";
+}
+--disable_reconnect
+--enable_query_log
+--enable_result_log
diff --git a/mysql-test/suite/galera/include/galera_load_provider.inc b/mysql-test/suite/galera/include/galera_load_provider.inc
index 761a1a89fd3..aeab7e6ea19 100644
--- a/mysql-test/suite/galera/include/galera_load_provider.inc
+++ b/mysql-test/suite/galera/include/galera_load_provider.inc
@@ -5,6 +5,4 @@
--eval SET GLOBAL wsrep_cluster_address = '$wsrep_cluster_address_orig';
--enable_query_log
---enable_reconnect
---source include/wait_until_connected_again.inc
---source include/wait_until_ready.inc
+--source include/galera_wait_ready.inc
diff --git a/mysql-test/suite/galera/include/start_mysqld.inc b/mysql-test/suite/galera/include/start_mysqld.inc
index 4ee3d17810c..57af9203d0f 100644
--- a/mysql-test/suite/galera/include/start_mysqld.inc
+++ b/mysql-test/suite/galera/include/start_mysqld.inc
@@ -12,11 +12,4 @@ if ($galera_wsrep_start_position == '') {
--exec echo "restart:$start_mysqld_params" > $_expect_file_name
}
-# Turn on reconnect
---enable_reconnect
-
-# Call script that will poll the server waiting for it to be back online again
---source include/wait_until_connected_again.inc
-
-# Turn off reconnect again
---disable_reconnect
+--source include/galera_wait_ready.inc