From 224082fc6b67ea3f5cd15efa4448bd36a125ccb3 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 6 Jul 2006 23:49:09 +0200 Subject: [PATCH] BUG#19951: Race conditions in test wait_timeout. Fix random failures in test 'wait_timeout' that depend on exact timing. 1. Force a reconnect initially if necessary, as otherwise slow startup might have caused a connection timeout before the test can even start. 2. Explicitly disconnect the first connection to remove confusion about which connection aborts from timeout, causing test failure. mysql-test/r/wait_timeout.result: Fix two races in test. mysql-test/t/wait_timeout.test: Fix two races in test. --- mysql-test/r/wait_timeout.result | 4 ++++ mysql-test/t/wait_timeout.test | 12 +++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/wait_timeout.result b/mysql-test/r/wait_timeout.result index 683986abf5d..b865a17454d 100644 --- a/mysql-test/r/wait_timeout.result +++ b/mysql-test/r/wait_timeout.result @@ -1,3 +1,7 @@ +select 0; +0 +0 +flush status; select 1; 1 1 diff --git a/mysql-test/t/wait_timeout.test b/mysql-test/t/wait_timeout.test index 8387c08c902..195d1a5d3f2 100644 --- a/mysql-test/t/wait_timeout.test +++ b/mysql-test/t/wait_timeout.test @@ -9,16 +9,20 @@ # Connect with another connection and reset counters --disable_query_log connect (wait_con,localhost,root,,test,,); -flush status; # Reset counters connection wait_con; set session wait_timeout=100; let $retries=300; -let $aborted_clients = `SHOW STATUS LIKE 'aborted_clients'`; set @aborted_clients= 0; --enable_query_log # Disable reconnect and do the query connection default; +# If slow host (Valgrind...), we may have already timed out here. +# So force a reconnect if necessary, using a dummy query. And issue a +# 'flush status' to reset the 'aborted_clients' counter. +--enable_reconnect +select 0; +flush status; --disable_reconnect select 1; @@ -46,6 +50,9 @@ connection default; select 2; --enable_reconnect select 3; +# Disconnect so that we will not be confused by a future abort from this +# connection. +disconnect default # # Do the same test as above on a TCP connection @@ -56,7 +63,6 @@ select 3; connection wait_con; flush status; # Reset counters let $retries=300; -let $aborted_clients = `SHOW STATUS LIKE 'aborted_clients'`; set @aborted_clients= 0; --enable_query_log