mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
BUG#31024: STOP SLAVE does not stop attempted connect()s
Problem: if the IO slave thread is attempting to connect, STOP SLAVE waits for the attempt to finish. It may take a long time. Fix: don't wait, stop the slave immediately. sql/slave.cc: Send a SIGALRM signal to the slave thread when stopping it (using pthread_kill()). This breaks current socket(), connect(), poll() etc. calls, and makes the subsequent thd->awake() call effective. Also, move the definition of KICK_SLAVE to slave.cc. sql/sql_repl.h: Removed KICK_SLAVE and inlined it in slave.cc because: - it was only called once, so better to make it local to where it is used - it needed to include a preprocessor conditional in the middle
This commit is contained in:
@ -35,12 +35,6 @@ extern I_List<i_string> binlog_do_db, binlog_ignore_db;
|
||||
extern int max_binlog_dump_events;
|
||||
extern my_bool opt_sporadic_binlog_dump_fail;
|
||||
|
||||
#define KICK_SLAVE(thd) do { \
|
||||
pthread_mutex_lock(&(thd)->LOCK_delete); \
|
||||
(thd)->awake(THD::NOT_KILLED); \
|
||||
pthread_mutex_unlock(&(thd)->LOCK_delete); \
|
||||
} while(0)
|
||||
|
||||
int start_slave(THD* thd, MASTER_INFO* mi, bool net_report);
|
||||
int stop_slave(THD* thd, MASTER_INFO* mi, bool net_report);
|
||||
bool change_master(THD* thd, MASTER_INFO* mi);
|
||||
|
Reference in New Issue
Block a user