summaryrefslogtreecommitdiff
path: root/sql/slave.cc
diff options
context:
space:
mode:
authorIgor Mazur <igor.mazur@grammarly.com>2017-11-11 22:32:39 +0200
committerAndrei Elkin <andrei.elkin@mariadb.com>2018-11-06 21:11:49 +0200
commit54b8856b87629e9fec075e3a71179eefc7fa02ac (patch)
tree35451763fcc4a7167d365d22f137e09e70f6457f /sql/slave.cc
parent7dfcb871079ce03c4ad0f6562f94b5a3cd0e1ecb (diff)
downloadmariadb-git-54b8856b87629e9fec075e3a71179eefc7fa02ac.tar.gz
MDEV-14528 Track master timestamp in case rolling back to serial replication
When replicated events are from Master unaware of MariaDB GTID their handling by the Parallel slave misses Seconds_Behind_Master updating. In the bug condition the Show-Slave-Status' field remains unchanged. Because in such case event execution is sequential the bug is fixed with deploying the same logics as in the explicit single-threaded mode with is to set Relay_log_event::last_master_timestamp member early at the end of event reading from the relay log.
Diffstat (limited to 'sql/slave.cc')
-rw-r--r--sql/slave.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/sql/slave.cc b/sql/slave.cc
index 7e52822ca51..d6223453a5b 100644
--- a/sql/slave.cc
+++ b/sql/slave.cc
@@ -3960,6 +3960,11 @@ static int exec_relay_log_event(THD* thd, Relay_log_info* rli,
This is the case for pre-10.0 events without GTID, and for handling
slave_skip_counter.
*/
+ if (!(ev->is_artificial_event() || ev->is_relay_log_event() || (ev->when == 0)))
+ {
+ rli->last_master_timestamp= ev->when + (time_t) ev->exec_time;
+ DBUG_ASSERT(rli->last_master_timestamp >= 0);
+ }
}
if (typ == GTID_EVENT)