summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/slave.cc30
1 files changed, 14 insertions, 16 deletions
diff --git a/sql/slave.cc b/sql/slave.cc
index f785bdcd4d7..82d9799fec9 100644
--- a/sql/slave.cc
+++ b/sql/slave.cc
@@ -582,6 +582,20 @@ int purge_relay_logs(RELAY_LOG_INFO* rli, THD *thd, bool just_reset,
rli->slave_skip_counter=0;
pthread_mutex_lock(&rli->data_lock);
+
+ /*
+ we close the relay log fd possibly left open by the slave SQL thread,
+ to be able to delete it; the relay log fd possibly left open by the slave
+ I/O thread will be closed naturally in reset_logs() by the
+ close(LOG_CLOSE_TO_BE_OPENED) call
+ */
+ if (rli->cur_log_fd >= 0)
+ {
+ end_io_cache(&rli->cache_buf);
+ my_close(rli->cur_log_fd, MYF(MY_WME));
+ rli->cur_log_fd= -1;
+ }
+
if (rli->relay_log.reset_logs(thd))
{
*errmsg = "Failed during log reset";
@@ -3692,14 +3706,6 @@ err:
mi->slave_running = 0;
mi->io_thd = 0;
- /* Close log file and free buffers */
- if (mi->rli.cur_log_fd >= 0)
- {
- end_io_cache(&mi->rli.cache_buf);
- my_close(mi->rli.cur_log_fd, MYF(MY_WME));
- mi->rli.cur_log_fd= -1;
- }
-
/* Forget the relay log's format */
delete mi->rli.relay_log.description_event_for_queue;
mi->rli.relay_log.description_event_for_queue= 0;
@@ -3916,14 +3922,6 @@ the slave SQL thread with \"SLAVE START\". We stopped at log \
rli->cached_charset_invalidate();
rli->save_temporary_tables = thd->temporary_tables;
- /* Close log file and free buffers if it's already open */
- if (rli->cur_log_fd >= 0)
- {
- end_io_cache(&rli->cache_buf);
- my_close(rli->cur_log_fd, MYF(MY_WME));
- rli->cur_log_fd = -1;
- }
-
/*
TODO: see if we can do this conditionally in next_event() instead
to avoid unneeded position re-init