summaryrefslogtreecommitdiff
path: root/sql/wsrep_applier.cc
diff options
context:
space:
mode:
authorNirbhay Choubey <nirbhay@mariadb.com>2015-03-06 13:19:49 -0500
committerNirbhay Choubey <nirbhay@mariadb.com>2015-03-06 13:19:49 -0500
commitc6acdf7c281f91026cfac549d718511b9ed083aa (patch)
tree5850423de86bc91c9adb8024adee85a30c9b5110 /sql/wsrep_applier.cc
parent6f9e33ecb020bcf3e6db246bc04a9be153c63dc4 (diff)
downloadmariadb-git-c6acdf7c281f91026cfac549d718511b9ed083aa.tar.gz
MDEV-7203: replicate_events_marked_for_skip didn't work on Galera cluster
OPTION_SKIP_REPLICATION flag needs to be preserved for events received on non-originating nodes.
Diffstat (limited to 'sql/wsrep_applier.cc')
-rw-r--r--sql/wsrep_applier.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/sql/wsrep_applier.cc b/sql/wsrep_applier.cc
index 6f1ead89158..f8e82f6b805 100644
--- a/sql/wsrep_applier.cc
+++ b/sql/wsrep_applier.cc
@@ -149,8 +149,9 @@ static wsrep_cb_status_t wsrep_apply_events(THD* thd,
break;
}
- thd->set_server_id(ev->server_id); // use the original server id for logging
- thd->set_time(); // time the query
+ /* Use the original server id for logging. */
+ thd->set_server_id(ev->server_id);
+ thd->set_time(); // time the query
wsrep_xid_init(&thd->transaction.xid_state.xid,
&thd->wsrep_trx_meta.gtid.uuid,
thd->wsrep_trx_meta.gtid.seqno);
@@ -162,6 +163,10 @@ static wsrep_cb_status_t wsrep_apply_events(THD* thd,
ev->when_sec_part= hrtime_sec_part(hrtime);
}
+ thd->variables.option_bits=
+ (thd->variables.option_bits & ~OPTION_SKIP_REPLICATION) |
+ (ev->flags & LOG_EVENT_SKIP_REPLICATION_F ? OPTION_SKIP_REPLICATION : 0);
+
ev->thd = thd;
exec_res = ev->apply_event(thd->wsrep_rgi);
DBUG_PRINT("info", ("exec_event result: %d", exec_res));