summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2017-10-27 11:16:32 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2017-10-27 11:24:11 +0300
commitb94a62b5dfa48c0ecec8560e8fcd0431d2904e0a (patch)
tree82b1d279d49464bd82fc8fcea83b17415f9fb5d5
parentf29cfa1d7e70f129fd53960d010803d79f8c2ed0 (diff)
downloadmariadb-git-b94a62b5dfa48c0ecec8560e8fcd0431d2904e0a.tar.gz
MDEV-13890 mariabackup.xb_compressed_encrypted failed in buildbot, InnoDB: assertion failure
The assertion failure was relaxed in commit 02ba15a9dae97f23cfe47fa788c09d65aa1cfcd2 but it was not enough, because another assertion would fail. trx_undo_free_prepared(): Allow any undo log state. For transactions that were resurrected in TRX_STATE_COMMITTED_IN_MEMORY the undo log state would have been reset by trx_undo_set_state_at_finish().
-rw-r--r--storage/innobase/trx/trx0undo.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/storage/innobase/trx/trx0undo.cc b/storage/innobase/trx/trx0undo.cc
index e8bea3a2199..5e6b67007ad 100644
--- a/storage/innobase/trx/trx0undo.cc
+++ b/storage/innobase/trx/trx0undo.cc
@@ -1818,6 +1818,12 @@ trx_undo_free_prepared(
switch (trx->rsegs.m_redo.update_undo->state) {
case TRX_UNDO_PREPARED:
break;
+ case TRX_UNDO_CACHED:
+ case TRX_UNDO_TO_FREE:
+ case TRX_UNDO_TO_PURGE:
+ ut_ad(trx_state_eq(trx,
+ TRX_STATE_COMMITTED_IN_MEMORY));
+ /* fall through */
case TRX_UNDO_ACTIVE:
/* lock_trx_release_locks() assigns
trx->is_recovered=false */
@@ -1840,6 +1846,12 @@ trx_undo_free_prepared(
switch (trx->rsegs.m_redo.insert_undo->state) {
case TRX_UNDO_PREPARED:
break;
+ case TRX_UNDO_CACHED:
+ case TRX_UNDO_TO_FREE:
+ case TRX_UNDO_TO_PURGE:
+ ut_ad(trx_state_eq(trx,
+ TRX_STATE_COMMITTED_IN_MEMORY));
+ /* fall through */
case TRX_UNDO_ACTIVE:
/* lock_trx_release_locks() assigns
trx->is_recovered=false */