Commit 0f1ae130 authored by msvensson@neptunus.(none)'s avatar msvensson@neptunus.(none)

Merge bk-internal:/home/bk/mysql-5.0

into  neptunus.(none):/home/msvensson/mysql/mysql-5.0
parents 03ee1535 6fb8f4f8
# This test uses grants, which can't get tested for embedded server # This test uses grants, which can't get tested for embedded server
-- source include/not_embedded.inc -- source include/not_embedded.inc
# This test uses chmod, can't be run with root permissions
-- source include/not_as_root.inc
# Test for information_schema.schemata & # Test for information_schema.schemata &
# show databases # show databases
......
...@@ -8,6 +8,9 @@ ...@@ -8,6 +8,9 @@
# #
--source include/not_windows.inc --source include/not_windows.inc
# This test uses chmod, can't be run with root permissions
-- source include/not_as_root.inc
# #
# Bug #15851 Unlistable directories yield no info from information_schema # Bug #15851 Unlistable directories yield no info from information_schema
......
...@@ -4,10 +4,41 @@ ...@@ -4,10 +4,41 @@
# #
# Bug #8731: wait_timeout does not work on Mac OS X # Bug #8731: wait_timeout does not work on Mac OS X
# #
# Connect with another connection and reset counters
--disable_query_log
connect (wait_con,localhost,root,,test,,);
flush status; # Reset counters
connection wait_con;
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;
--disable_reconnect --disable_reconnect
select 1; select 1;
# wait_timeout is 1, so we should get disconnected now
--sleep 2 # Switch to wait_con and wait until server has aborted the connection
--disable_query_log
connection wait_con;
while (!`select @aborted_clients`)
{
sleep 0.1;
let $aborted_clients = `SHOW STATUS LIKE 'aborted_clients'`;
eval set @aborted_clients= SUBSTRING('$aborted_clients', 16)+0;
dec $retries;
if (!$retries)
{
Failed to detect that client has been aborted;
}
}
--enable_query_log
connection default;
# When the connection is closed in this way, the error code should # When the connection is closed in this way, the error code should
# be consistent see bug#2845 for an explanation # be consistent see bug#2845 for an explanation
--error 2006 --error 2006
...@@ -15,12 +46,41 @@ select 2; ...@@ -15,12 +46,41 @@ select 2;
--enable_reconnect --enable_reconnect
select 3; select 3;
#
# Do the same test as above on a TCP connection # Do the same test as above on a TCP connection
# (which we get by specifying a ip adress)
# Connect with another connection and reset counters
--disable_query_log
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
connect (con1,127.0.0.1,root,,test,$MASTER_MYPORT,); connect (con1,127.0.0.1,root,,test,$MASTER_MYPORT,);
--disable_reconnect --disable_reconnect
select 1; select 1;
# wait_timeout is 1, so we should get disconnected now
--sleep 2 # Switch to wait_con and wait until server has aborted the connection
--disable_query_log
connection wait_con;
while (!`select @aborted_clients`)
{
sleep 0.1;
let $aborted_clients = `SHOW STATUS LIKE 'aborted_clients'`;
eval set @aborted_clients= SUBSTRING('$aborted_clients', 16)+0;
dec $retries;
if (!$retries)
{
Failed to detect that client has been aborted;
}
}
--enable_query_log
connection con1;
# When the connection is closed in this way, the error code should # When the connection is closed in this way, the error code should
# be consistent see bug#2845 for an explanation # be consistent see bug#2845 for an explanation
--error 2006 --error 2006
......
...@@ -934,7 +934,20 @@ void kill_mysql(void) ...@@ -934,7 +934,20 @@ void kill_mysql(void)
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
/* Force server down. kill all connections and threads and exit */ /*
Force server down. Kill all connections and threads and exit
SYNOPSIS
kill_server
sig_ptr Signal number that caused kill_server to be called.
NOTE!
A signal number of 0 mean that the function was not called
from a signal handler and there is thus no signal to block
or stop, we just want to kill the server.
*/
#if defined(OS2) || defined(__NETWARE__) #if defined(OS2) || defined(__NETWARE__)
extern "C" void kill_server(int sig_ptr) extern "C" void kill_server(int sig_ptr)
......
...@@ -3949,10 +3949,17 @@ the slave SQL thread with \"SLAVE START\". We stopped at log \ ...@@ -3949,10 +3949,17 @@ the slave SQL thread with \"SLAVE START\". We stopped at log \
delete thd; delete thd;
pthread_mutex_unlock(&LOCK_thread_count); pthread_mutex_unlock(&LOCK_thread_count);
pthread_cond_broadcast(&rli->stop_cond); pthread_cond_broadcast(&rli->stop_cond);
/*
Bug #19938 Valgrind error (race) in handle_slave_sql()
Read the value of rli->event_till_abort before releasing the mutex
*/
const int eta= rli->events_till_abort;
// tell the world we are done // tell the world we are done
pthread_mutex_unlock(&rli->run_lock); pthread_mutex_unlock(&rli->run_lock);
#ifndef DBUG_OFF // TODO: reconsider the code below #ifndef DBUG_OFF // TODO: reconsider the code below
if (abort_slave_event_count && !rli->events_till_abort) if (abort_slave_event_count && !eta)
goto slave_begin; goto slave_begin;
#endif #endif
my_thread_end(); my_thread_end();
......
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