mirror of
https://github.com/MariaDB/server.git
synced 2026-04-20 15:25:33 +02:00
properly kill slave in all cases on systems that do not interrupt syscalls
on a signal
This commit is contained in:
parent
497c842626
commit
d1f560ef7b
2 changed files with 11 additions and 7 deletions
|
|
@ -602,16 +602,13 @@ int stop_slave(THD* thd, bool net_report )
|
|||
if (slave_running)
|
||||
{
|
||||
abort_slave = 1;
|
||||
thr_alarm_kill(slave_real_id);
|
||||
#ifdef SIGNAL_WITH_VIO_CLOSE
|
||||
slave_thd->close_active_vio();
|
||||
#endif
|
||||
KICK_SLAVE;
|
||||
// do not abort the slave in the middle of a query, so we do not set
|
||||
// thd->killed for the slave thread
|
||||
thd->proc_info = "waiting for slave to die";
|
||||
while(slave_running)
|
||||
{
|
||||
/* there is a small change that slave thread might miss the first
|
||||
/* there is a small chance that slave thread might miss the first
|
||||
alarm. To protect againts it, resend the signal until it reacts
|
||||
*/
|
||||
|
||||
|
|
@ -630,7 +627,7 @@ int stop_slave(THD* thd, bool net_report )
|
|||
#endif
|
||||
pthread_cond_timedwait(&COND_slave_stopped, &LOCK_slave, &abstime);
|
||||
if (slave_running)
|
||||
thr_alarm_kill(slave_real_id);
|
||||
KICK_SLAVE;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -716,7 +713,7 @@ int change_master(THD* thd)
|
|||
if((slave_was_running = slave_running))
|
||||
{
|
||||
abort_slave = 1;
|
||||
thr_alarm_kill(slave_real_id);
|
||||
KICK_SLAVE;
|
||||
thd->proc_info = "waiting for slave to die";
|
||||
while(slave_running)
|
||||
pthread_cond_wait(&COND_slave_stopped, &LOCK_slave); // wait until done
|
||||
|
|
|
|||
|
|
@ -14,6 +14,13 @@ extern int max_binlog_dump_events;
|
|||
extern bool opt_sporadic_binlog_dump_fail;
|
||||
#endif
|
||||
|
||||
#ifdef SIGNAL_WITH_VIO_CLOSE
|
||||
#define KICK_SLAVE { slave_thd->close_active_vio(); \
|
||||
thr_alarm_kill(slave_real_id); }
|
||||
#else
|
||||
#define KICK_SLAVE thr_alarm_kill(slave_real_id);
|
||||
#endif
|
||||
|
||||
File open_binlog(IO_CACHE *log, const char *log_file_name,
|
||||
const char **errmsg);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue