mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
565f1bc4a1
On Mac OS X or Windows, sending a SIGHUP to the server or a asynchronous flush (triggered by flush_time), would cause the server to crash. The problem was that a hook used to detach client API handles wasn't prepared to handle cases where the thread does not have a associated session. The solution is to verify whether the thread has a associated session before trying to detach a handle. mysql-test/r/federated_debug.result: Add test case result for Bug#47525 mysql-test/t/federated_debug-master.opt: Debug point. mysql-test/t/federated_debug.test: Add test case for Bug#47525 sql/slave.cc: Check whether a the thread has a associated session. sql/sql_parse.cc: Add debug code to simulate a reload without thread session.
39 lines
991 B
Text
39 lines
991 B
Text
--source include/have_debug.inc
|
|
--source include/federated.inc
|
|
|
|
--echo #
|
|
--echo # Bug#47525: MySQL crashed (Federated)
|
|
--echo #
|
|
|
|
connection slave;
|
|
--echo # Switch to slave
|
|
CREATE TABLE t1(a INT);
|
|
INSERT INTO t1 VALUES (1);
|
|
|
|
connection master;
|
|
--echo # Switch to master
|
|
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
|
eval CREATE TABLE t1(a INT) ENGINE=FEDERATED
|
|
CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/test/t1';
|
|
|
|
SELECT * FROM t1;
|
|
|
|
--echo # Start a asynchronous reload
|
|
--exec $MYSQLADMIN --no-defaults -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= refresh 2>&1
|
|
|
|
--echo # Wait for tables to be closed
|
|
let $show_statement= SHOW STATUS LIKE 'Open_tables';
|
|
let $field= Value;
|
|
let $condition= = '0';
|
|
--source include/wait_show_condition.inc
|
|
|
|
--echo # Ensure that the server didn't crash
|
|
SELECT * FROM t1;
|
|
--echo # Drop tables on master and slave
|
|
DROP TABLE t1;
|
|
connection slave;
|
|
DROP TABLE t1;
|
|
|
|
connection default;
|
|
--echo # Federated cleanup
|
|
source include/federated_cleanup.inc;
|