mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
a5bcb63f45
http://forge.mysql.com/worklog/task.php?id=4374 new option --maria-force-start-after-recovery-failures=N; number of consecutive recovery failures (failures of log reading or recovery processing, anything in [translog_init(),maria_recovery_from_log()]) is stored in the control file; if at a Maria start they are more than N, logs are removed. This is for automated systems which have to run whatever happens. As tables risk staying corrupted, --maria-recover should also be used on them: this revision makes maria-recover work (it was disabled). Fixed bug in translog_is_log_files(). translog_init() now prints message to error log if failed. Removed \0 in the output of SHOW ENGINE MARIA LOGS; removed hard-coded engine name there. KNOWN_BUGS.txt: As option --maria-force-start-after-recovery-failures is added, it corresponds to the wish "we should fix that if this happens etc". LOAD INDEX is not ignored since a few weeks. Listed concurrency bugs have been fixed some time ago. Recovery of fulltext and GIS indexes works since a few weeks. mysql-test/include/maria_make_snapshot.inc: configurable prefix in table's name (so far 't' or 't_corrupted') mysql-test/include/maria_make_snapshot_for_comparison.inc: configurable prefix in table's name (so far 't' or 't_corrupted') mysql-test/include/maria_make_snapshot_for_feeding_recovery.inc: configurable prefix in table's name (so far 't' or 't_corrupted') mysql-test/include/maria_verify_recovery.inc: configurable prefix in table's name (so far 't' or 't_corrupted') mysql-test/lib/mtr_report.pl: new test maria-recover.test generates expected corruption warnings in the error log. maria-recovery.test's corrupted table is renamed to t_corrupted1 instead of t1. mysql-test/r/maria-preload.result: result update. maria_pagecache_read* values are similar to the previous version of this file, though a bit bigger because using the information_schema and the join leads to some internal maria temp table being used, and thus some blocks of it being read. mysql-test/r/maria-purge.result: engine's name in SHOW ENGINE MARIA LOGS changed. mysql-test/r/maria-recover.result: result for new test. We see corruption messages at first SELECT and then none at second SELECT, expected. mysql-test/r/maria-recovery.result: result update mysql-test/r/maria.result: new variables show up mysql-test/t/disabled.def: BUG#34911 is not fixed but the test had been made independent of the bug (workaround). A new bug (crash) has popped recently, so it has to stay disabled (BUG#35107). mysql-test/t/maria-preload.test: Work around BUG#34911 "FLUSH STATUS doesn't flush what it should": compute differences in status variables before and after relevant queries mysql-test/t/maria-recover-master.opt: test --maria-recover mysql-test/t/maria-recover.test: Test of the --maria-recover option (build a corrupted table and see if it is auto-repaired) mysql-test/t/maria-recovery-big.test: update for new API of include/maria*.inc mysql-test/t/maria-recovery-bitmap.test: update for new API of include/maria*.inc mysql-test/t/maria-recovery.test: update for new API of include/maria*.inc. Corrupted table t1 renamed to t_corrupted1, so that mtr_report.pl does not blindly remove all corruption messages for t1 which is a common name. storage/maria/ha_maria.cc: Enabling maria-recover. Adding option and global variable --maria_force_start_after_recovery_failures: ha_maria_init() calls mark_recovery_start() and mark_recovery_success() to keep track of failed consecutive recoveries and remove logs if needed. Removed \0 in the output of SHOW ENGINE MARIA LOGS; removed hard-coded engine name there. storage/maria/ma_checkpoint.c: new prototype storage/maria/ma_control_file.c: Storing in one byte in the control file, the number of consecutive recovery failures. storage/maria/ma_control_file.h: new prototype storage/maria/ma_init.c: new prototype storage/maria/ma_locking.c: Need to update open_count on disk at first write and close for transactional tables, like we already did for non-transactional tables, otherwise we cannot notice that the table is dubious. storage/maria/ma_loghandler.c: translog_is_log_files() is made more generic to serve either to search or to delete logs (the latter is for --maria-force-start-after-recovery-failures). It also had a bug (always returned FALSE). storage/maria/ma_loghandler.h: export function because ha_maria::mark_recovery_start() needs it storage/maria/ma_recovery.c: changing name of maria_recover() to distinguish from the maria-recover option. storage/maria/ma_recovery.h: changing name of maria_recover() to distinguish from the maria-recover option. storage/maria/ma_test_force_start.pl: Test of --maria-force-start-after-recovery-failures (and also, to be realistic, of --maria-recover). This is standalone because mysql-test-run does not support testing that multiple mysqld restarts expectedly failed. I'll have to run it on my machine and also on a Windows machine. storage/maria/unittest/ma_control_file-t.c: adding recovery_failures to the test storage/maria/unittest/ma_test_loghandler_multigroup-t.c: fix for compiler warning (unused variable in non-debug build) |
||
---|---|---|
.. | ||
unittest | ||
CMakeLists.txt | ||
file_formats.txt | ||
ft_maria.c | ||
ha_maria.cc | ||
ha_maria.h | ||
lockman.c | ||
lockman.h | ||
ma_bitmap.c | ||
ma_blockrec.c | ||
ma_blockrec.h | ||
ma_cache.c | ||
ma_changed.c | ||
ma_check.c | ||
ma_check_standalone.h | ||
ma_checkpoint.c | ||
ma_checkpoint.h | ||
ma_checksum.c | ||
ma_close.c | ||
ma_commit.c | ||
ma_commit.h | ||
ma_control_file.c | ||
ma_control_file.h | ||
ma_create.c | ||
ma_dbug.c | ||
ma_delete.c | ||
ma_delete_all.c | ||
ma_delete_table.c | ||
ma_dynrec.c | ||
ma_extra.c | ||
ma_ft_boolean_search.c | ||
ma_ft_eval.c | ||
ma_ft_eval.h | ||
ma_ft_nlq_search.c | ||
ma_ft_parser.c | ||
ma_ft_stem.c | ||
ma_ft_test1.c | ||
ma_ft_test1.h | ||
ma_ft_update.c | ||
ma_ftdefs.h | ||
ma_fulltext.h | ||
ma_info.c | ||
ma_init.c | ||
ma_key.c | ||
ma_key_recover.c | ||
ma_key_recover.h | ||
ma_keycache.c | ||
ma_locking.c | ||
ma_loghandler.c | ||
ma_loghandler.h | ||
ma_loghandler_lsn.h | ||
ma_open.c | ||
ma_packrec.c | ||
ma_page.c | ||
ma_pagecache.c | ||
ma_pagecache.h | ||
ma_pagecaches.c | ||
ma_pagecrc.c | ||
ma_panic.c | ||
ma_preload.c | ||
ma_range.c | ||
ma_recovery.c | ||
ma_recovery.h | ||
ma_recovery_util.c | ||
ma_recovery_util.h | ||
ma_rename.c | ||
ma_rfirst.c | ||
ma_rkey.c | ||
ma_rlast.c | ||
ma_rnext.c | ||
ma_rnext_same.c | ||
ma_rprev.c | ||
ma_rrnd.c | ||
ma_rsame.c | ||
ma_rsamepos.c | ||
ma_rt_index.c | ||
ma_rt_index.h | ||
ma_rt_key.c | ||
ma_rt_key.h | ||
ma_rt_mbr.c | ||
ma_rt_mbr.h | ||
ma_rt_split.c | ||
ma_rt_test.c | ||
ma_scan.c | ||
ma_search.c | ||
ma_sort.c | ||
ma_sp_defs.h | ||
ma_sp_key.c | ||
ma_sp_test.c | ||
ma_state.c | ||
ma_state.h | ||
ma_static.c | ||
ma_statrec.c | ||
ma_test1.c | ||
ma_test2.c | ||
ma_test3.c | ||
ma_test_all.res | ||
ma_test_all.sh | ||
ma_test_big.sh | ||
ma_test_force_start.pl | ||
ma_test_recovery | ||
ma_unique.c | ||
ma_update.c | ||
ma_write.c | ||
Makefile.am | ||
maria_chk.c | ||
maria_def.h | ||
maria_ftdump.c | ||
maria_pack.c | ||
maria_read_log.c | ||
maria_rename.sh | ||
plug.in | ||
tablockman.c | ||
tablockman.h | ||
test_pack | ||
trnman.c | ||
trnman.h | ||
trnman_public.h |