diff options
Diffstat (limited to 'sql/rpl_rli.cc')
-rw-r--r-- | sql/rpl_rli.cc | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/sql/rpl_rli.cc b/sql/rpl_rli.cc index edbb630c781..a8af950fa08 100644 --- a/sql/rpl_rli.cc +++ b/sql/rpl_rli.cc @@ -2283,11 +2283,9 @@ void rpl_group_info::cleanup_context(THD *thd, bool error) if (unlikely(error)) { - /* - trans_rollback above does not rollback XA transactions - (todo/fixme consider to do so. - */ - if (thd->transaction->xid_state.is_explicit_XA()) + // leave alone any XA prepared transactions + if (thd->transaction->xid_state.is_explicit_XA() && + thd->transaction->xid_state.get_state_code() != XA_PREPARED) xa_trans_force_rollback(thd); thd->release_transactional_locks(); |