MDEV-23584 : Galera assertion failure "thd->transaction.stmt.is_empty() at transaction.cc:69

If statement still contains changes it must be committed
before actual transaction is committed.

This assertion was found using randgen and happens only on
applier. No repeatable test case found.
This commit is contained in:
Jan Lindström 2020-08-26 13:32:15 +03:00
parent 1e08e08ccb
commit 571764c04f

View File

@ -301,9 +301,15 @@ int Wsrep_high_priority_service::commit(const wsrep::ws_handle& ws_handle,
DBUG_ASSERT(thd->wsrep_trx().active()); DBUG_ASSERT(thd->wsrep_trx().active());
thd->wsrep_cs().prepare_for_ordering(ws_handle, ws_meta, true); thd->wsrep_cs().prepare_for_ordering(ws_handle, ws_meta, true);
thd_proc_info(thd, "committing"); thd_proc_info(thd, "committing");
int ret=0;
const bool is_ordered= !ws_meta.seqno().is_undefined(); const bool is_ordered= !ws_meta.seqno().is_undefined();
int ret= trans_commit(thd);
if (!thd->transaction.stmt.is_empty())
ret= trans_commit_stmt(thd);
if (ret == 0)
ret= trans_commit(thd);
if (ret == 0) if (ret == 0)
{ {