polardbxengine/mysql-test/include/wait_until_connected_again.inc

99 lines
2.4 KiB
PHP

#
# Include this script to wait until the connection to the
# server has been restored or timeout occurs
#
# $wait_counter - can be set before calling the script, will be reset at the end
#
# $explicit_default_counter - can be set before calling the script,
# reset only at the end of the test, overrides $wait_counter
--disable_result_log
--disable_query_log
--let $counter= 1000
if ($explicit_default_counter)
{
--let $wait_counter= $explicit_default_counter
}
if ($VALGRIND_TEST) {
--let $wait_counter= 20000
}
if ($TSAN_OPTIONS) {
--let $wait_counter= 15000
}
if ($MTR_MANUAL_DEBUG) {
--let $counter = 864000
}
if ($wait_counter) {
--let $counter= $wait_counter
}
--let $mysql_errno= 9999
while ($mysql_errno)
{
# Strangely enough, the server might return "Too many connections"
# while being shutdown, thus 1040 is an "allowed" error
# See BUG#36228
--error 0,1040,1053,2002,2003,2006,2013,1045,ER_SECURE_TRANSPORT_REQUIRED,2016,2017
show session status;
if ($mysql_errno == 1045){
--let mysql_errno=0
}
if ($mysql_errname == ER_SECURE_TRANSPORT_REQUIRED){
--let mysql_errno=0
}
--dec $counter
if (!$counter)
{
--die Server failed to restart
}
--sleep 0.1
}
if ($SECONDARY_ENGINE_TEST) {
--let $counter = 100
--let $secondary_engine_status = OFF
while ($secondary_engine_status == OFF) {
--let $secondary_engine_status = query_get_value($SECONDARY_ENGINE_STATUS_QUERY, Value, 1)
--dec $counter
if (!$counter) {
--die Secondary engine server is not running or it is not bootstrapped
}
--sleep 0.1
}
--sleep 0.1
# Wait till the tables get loaded into secondary engine
--perl
my $wait_file= "$ENV{MYSQLTEST_VARDIR}/tmp/wait_until_load";
while (-e $wait_file) {
select(undef, undef, undef, (100 / 1000));
}
EOF
}
# wait leader election
--sleep 1
let $wait_timeout= 60;
let $wait_condition= select count(*)=1 from information_schema.alisql_cluster_local where role='leader';
--source include/wait_condition.inc
# wait leader enable read/write
let $wait_timeout= 60;
let $wait_condition= select SERVER_READY_FOR_RW='Yes' from information_schema.alisql_cluster_local;
--source include/wait_condition.inc
# Reset $wait_counter so that its value won't be used on subsequent
# calls, and default will be used instead.
if (!$explicit_default_counter)
{
--let $wait_counter= 0
}
--enable_query_log
--enable_result_log