summaryrefslogtreecommitdiff
path: root/sql/wsrep_thd.cc
diff options
context:
space:
mode:
authorsjaakola <seppo.jaakola@iki.fi>2016-03-08 18:10:21 +0200
committerNirbhay Choubey <nirbhay@mariadb.com>2016-08-21 16:17:05 -0400
commit4e4ad17163709a50314cbf72d72cec2596467513 (patch)
tree690029646494bfc9a2535f87688c8149c713565f /sql/wsrep_thd.cc
parentd246630d739717a58d9b1c33705ce7f1d8504b43 (diff)
downloadmariadb-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.cc9
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)