diff options
Diffstat (limited to 'sql/sql_repl.cc')
-rw-r--r-- | sql/sql_repl.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index e27a77422ad..0aaaf027ea3 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -577,16 +577,22 @@ void reset_slave() { MY_STAT stat_area; char fname[FN_REFLEN]; - bool slave_was_running = slave_running; - - if(slave_running) - stop_slave(0,0); + bool slave_was_running ; + pthread_mutex_lock(&LOCK_slave); + if((slave_was_running = slave_running)) + { + pthread_mutex_unlock(&LOCK_slave); + stop_slave(0,0); + } + else + pthread_mutex_unlock(&LOCK_slave); + + end_master_info(&glob_mi); fn_format(fname, master_info_file, mysql_data_home, "", 4+16+32); if(my_stat(fname, &stat_area, MYF(0))) if(my_delete(fname, MYF(MY_WME))) return; - end_master_info(&glob_mi); if(slave_was_running) start_slave(0,0); } |