summaryrefslogtreecommitdiff
path: root/sql/slave.cc
diff options
context:
space:
mode:
authorLibing Song <anders.song@greatopensource.com>2011-01-19 01:38:10 +0800
committerLibing Song <anders.song@greatopensource.com>2011-01-19 01:38:10 +0800
commit2d0fcc1d44b72f00fea057f3eaf8975d55f9c5f5 (patch)
tree48e0ff06d27977ce1e9919d20903323c7d4ffa0b /sql/slave.cc
parent634b102533d948f669f0291374664ce4e8780d49 (diff)
parent5d75729c928338c2b49752b9b271ff7eb9a261ec (diff)
downloadmariadb-git-2d0fcc1d44b72f00fea057f3eaf8975d55f9c5f5.tar.gz
Manual merge
Diffstat (limited to 'sql/slave.cc')
-rw-r--r--sql/slave.cc48
1 files changed, 24 insertions, 24 deletions
diff --git a/sql/slave.cc b/sql/slave.cc
index e081d2406be..e9daa804cc3 100644
--- a/sql/slave.cc
+++ b/sql/slave.cc
@@ -504,6 +504,30 @@ int terminate_slave_threads(Master_info* mi,int thread_mask,bool skip_lock)
mysql_mutex_t *sql_lock = &mi->rli.run_lock, *io_lock = &mi->run_lock;
mysql_mutex_t *log_lock= mi->rli.relay_log.get_log_lock();
+ if (thread_mask & (SLAVE_SQL|SLAVE_FORCE_ALL))
+ {
+ DBUG_PRINT("info",("Terminating SQL thread"));
+ mi->rli.abort_slave=1;
+ if ((error=terminate_slave_thread(mi->rli.sql_thd, sql_lock,
+ &mi->rli.stop_cond,
+ &mi->rli.slave_running,
+ skip_lock)) &&
+ !force_all)
+ DBUG_RETURN(error);
+
+ mysql_mutex_lock(log_lock);
+
+ DBUG_PRINT("info",("Flushing relay-log info file."));
+ if (current_thd)
+ thd_proc_info(current_thd, "Flushing relay-log info file.");
+ if (flush_relay_log_info(&mi->rli))
+ DBUG_RETURN(ER_ERROR_DURING_FLUSH_LOGS);
+
+ if (my_sync(mi->rli.info_fd, MYF(MY_WME)))
+ DBUG_RETURN(ER_ERROR_DURING_FLUSH_LOGS);
+
+ mysql_mutex_unlock(log_lock);
+ }
if (thread_mask & (SLAVE_IO|SLAVE_FORCE_ALL))
{
DBUG_PRINT("info",("Terminating IO thread"));
@@ -532,30 +556,6 @@ int terminate_slave_threads(Master_info* mi,int thread_mask,bool skip_lock)
mysql_mutex_unlock(log_lock);
}
- if (thread_mask & (SLAVE_SQL|SLAVE_FORCE_ALL))
- {
- DBUG_PRINT("info",("Terminating SQL thread"));
- mi->rli.abort_slave=1;
- if ((error=terminate_slave_thread(mi->rli.sql_thd, sql_lock,
- &mi->rli.stop_cond,
- &mi->rli.slave_running,
- skip_lock)) &&
- !force_all)
- DBUG_RETURN(error);
-
- mysql_mutex_lock(log_lock);
-
- DBUG_PRINT("info",("Flushing relay-log info file."));
- if (current_thd)
- thd_proc_info(current_thd, "Flushing relay-log info file.");
- if (flush_relay_log_info(&mi->rli))
- DBUG_RETURN(ER_ERROR_DURING_FLUSH_LOGS);
-
- if (my_sync(mi->rli.info_fd, MYF(MY_WME)))
- DBUG_RETURN(ER_ERROR_DURING_FLUSH_LOGS);
-
- mysql_mutex_unlock(log_lock);
- }
DBUG_RETURN(0);
}