Commit 64d21287 authored by Guilhem Bichot's avatar Guilhem Bichot

Fix for BUG#41102 "Maria: maria-no-logging.test fails randomly on Win64"

mysql-test/include/maria_empty_logs.inc:
  move mysqladmin call to include file for reusal (so that others don't have to hit the same bug in their tests);
  this include file additionally waits for disconnection. Reasons for BUG#41102:
  - in maria-no-logging.test, we shut down mysqld in maria_empty_logs.inc, remove logs, tell mtr that it can
  restart mysqld, then wait for being connected (wait_until_connected_again.inc), then send commands to new mysqld.
  - but under Windows "mysqladmin shutdown" does not wait for mysqld to be down, so we accidentally removed logs
  while it was shutting down, wait_until_connected_again found that we were connected (because it was shutting
  down slowly, connections were not yet broken), sent new commands, and one of them failed because mysqld finally
  closed connections.
  - the fix is to just wait for disconnection after shutdown.
  - in a sense, the catch is the "again" in wait_until_connected_again.inc...
mysql-test/include/mysqladmin_shutdown.inc:
  shutdown with mysqladmin AND waiting for shutdown to complete (needed on Windows)
mysql-test/include/wait_until_connected_again.inc:
  comment
mysql-test/include/wait_until_disconnected.inc:
  script which waits until connection is lost
parent c9189d24
......@@ -13,7 +13,7 @@ append_file $MYSQLTEST_VARDIR/tmp/master0.expect;
wait-maria_empty_logs.inc
EOF
--exec $MYSQLADMIN --no-defaults -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= shutdown 2>&1;
--source include/mysqladmin_shutdown.inc
if (!$mel_keep_control_file)
{
......
# Initiates a clean shutdown of the server and waits for its completion
--exec $MYSQLADMIN --no-defaults -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= shutdown 2>&1;
# On Windows mysqladmin does not wait for shutdown to be finished,
# so we have to monitor this with our connection:
--source include/wait_until_disconnected.inc
......@@ -2,6 +2,9 @@
# Include this script to wait until the connection to the
# server has been restored or timeout occurs.
# You should have done --enable_reconnect first
# When you change this file you may have to chance its cousin
# wait_until_disconnected.inc
--disable_result_log
--disable_query_log
let $counter= 5000;
......
#
# Include this script after a shutdown to wait until the connection
# to the server has been lost or timeout occurs.
# When you change this file you may have to chance its cousin
# wait_until_connected_again.inc
--disable_result_log
--disable_query_log
let $counter= 5000;
let $mysql_errno= 0;
while (!$mysql_errno)
{
--error 0,2002,2003,2006,1053
show status;
dec $counter;
if (!$counter)
{
--die Server failed to disconnect me
}
--sleep 0.1
}
--enable_query_log
--enable_result_log
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment