summaryrefslogtreecommitdiff
path: root/sql/sql_repl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_repl.cc')
-rw-r--r--sql/sql_repl.cc16
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);
}