diff options
author | Guilhem Bichot <guilhem@mysql.com> | 2008-12-05 22:11:46 +0100 |
---|---|---|
committer | Guilhem Bichot <guilhem@mysql.com> | 2008-12-05 22:11:46 +0100 |
commit | 91bc9cc9e66d55e003e90a206a1771c9f27d54b1 (patch) | |
tree | 1a0685f730f5948ba1e7e59f789c61f194eb8af2 /storage/maria/trnman.c | |
parent | 44d3917f7a12756b714ff0deac56cb96a5cf3727 (diff) | |
download | mariadb-git-91bc9cc9e66d55e003e90a206a1771c9f27d54b1.tar.gz |
Fix for BUG#41037 "Maria: recovery failure (pushbuild2)" (checkpoint bug).
mysql-test/suite/maria/r/maria-recovery3.result:
result.
mysql-test/suite/maria/t/maria-recovery3-master.opt:
usual recovery test options
mysql-test/suite/maria/t/maria-recovery3.test:
Test for BUG#41037. Without the bugfix, the test would hang because Recovery would fail with "undo_key_insert got error 126": Recovery would believe INSERT of 2 is uncommitted, try to execute its UNDO_KEY_INSERT, fail to find the key to delete because DELETE deleted it. That failure of _ma_ck_real_delete() would mark table as corrupted (see
in d_search()) which is error 126 (HA_ERR_CRASHED).
storage/maria/ma_blockrec.c:
set trn->rec_lsn to LSN of commit record, when writing it.
storage/maria/ma_blockrec.h:
new function
storage/maria/ma_commit.c:
when committing or rolling back, rec_lsn should be LSN_IMPOSSIBLE: assertion is moved here
from trnman_end_trn(), because now ma_commit() can set rec_lsn and so when we reach trnman_end_trn()
it's not LSN_IMPOSSIBLE anymore.
Adding debug possibility to pause between COMMIT record write and trnman_commit_trn(), to be
able to fire checkpoint in between.
storage/maria/ma_loghandler.c:
in-write hook for COMMIT records
storage/maria/ma_recovery.c:
More debugging info in maria_recovery.trace, to see how the starting point of REDO phase is determined
storage/maria/trnman.c:
assertion cannot be here anymore see ma_commit.c
Diffstat (limited to 'storage/maria/trnman.c')
-rw-r--r-- | storage/maria/trnman.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/storage/maria/trnman.c b/storage/maria/trnman.c index 538dc75b663..51940705952 100644 --- a/storage/maria/trnman.c +++ b/storage/maria/trnman.c @@ -389,7 +389,6 @@ my_bool trnman_end_trn(TRN *trn, my_bool commit) LF_PINS *pins= trn->pins; DBUG_ENTER("trnman_end_trn"); - DBUG_ASSERT(trn->rec_lsn == 0); /* if a rollback, all UNDO records should have been executed */ DBUG_ASSERT(commit || trn->undo_lsn == 0); DBUG_PRINT("info", ("pthread_mutex_lock LOCK_trn_list")); |