diff options
author | sjaakola <seppo.jaakola@iki.fi> | 2016-03-08 18:10:21 +0200 |
---|---|---|
committer | Nirbhay Choubey <nirbhay@mariadb.com> | 2016-08-21 16:17:05 -0400 |
commit | 4e4ad17163709a50314cbf72d72cec2596467513 (patch) | |
tree | 690029646494bfc9a2535f87688c8149c713565f /sql/wsrep_thd.cc | |
parent | d246630d739717a58d9b1c33705ce7f1d8504b43 (diff) | |
download | mariadb-git-4e4ad17163709a50314cbf72d72cec2596467513.tar.gz |
Refs MW-255
- popping PS reprepare observer before BF aborted PS replaying begins
dangling observer will cause failure in open_table() ater on
- test case for this anomaly
Diffstat (limited to 'sql/wsrep_thd.cc')
-rw-r--r-- | sql/wsrep_thd.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sql/wsrep_thd.cc b/sql/wsrep_thd.cc index 9c2fa4ba856..09ffdbd54f5 100644 --- a/sql/wsrep_thd.cc +++ b/sql/wsrep_thd.cc @@ -185,6 +185,7 @@ static void wsrep_return_from_bf_mode(THD *thd, struct wsrep_thd_shadow* shadow) void wsrep_replay_transaction(THD *thd) { + DBUG_ENTER("wsrep_replay_transaction"); /* checking if BF trx must be replayed */ if (thd->wsrep_conflict_state== MUST_REPLAY) { DBUG_ASSERT(wsrep_thd_trx_seqno(thd)); @@ -193,6 +194,13 @@ void wsrep_replay_transaction(THD *thd) { WSREP_ERROR("replay issue, thd has reported status already"); } + + /* + PS reprepare observer should have been removed already. + open_table() will fail if we have dangling observer here. + */ + DBUG_ASSERT(thd->m_reprepare_observer == NULL); + thd->get_stmt_da()->reset_diagnostics_area(); thd->wsrep_conflict_state= REPLAYING; @@ -299,6 +307,7 @@ void wsrep_replay_transaction(THD *thd) mysql_mutex_unlock(&LOCK_wsrep_replaying); } } + DBUG_VOID_RETURN; } static void wsrep_replication_process(THD *thd) |