Commit graph

6 commits

Author SHA1 Message Date
Guilhem Bichot
a5bcb63f45 WL#4374 "Maria - force start if Recovery fails multiple times"
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)
2008-06-02 22:53:25 +02:00
unknown
1dfeb4783f update to "KNOWN BUGS"
KNOWN_BUGS.txt:
  update
2008-02-22 14:32:20 +01:00
unknown
315d7b3419 Add warning of TRANSACTIONAL=1 is used with handler that doesn't support it
Added hton_name() and handler->engine_name() and use these when appropriate


KNOWN_BUGS.txt:
  Added some of the known bugs
mysql-test/r/maria.result:
  Added test for TRANSACTIONAL=1
mysql-test/r/myisam.result:
  Added test for TRANSACTIONAL=1
mysql-test/t/maria.test:
  Added test for TRANSACTIONAL=1
mysql-test/t/myisam.test:
  Added test for TRANSACTIONAL=1
sql/handler.cc:
  ha_resolve_storage_engine_name() -> hton_name()
sql/handler.h:
  Added hton_name() and handler->engine_name()
sql/set_var.cc:
  Use hton_name()
sql/sql_table.cc:
  Add warning of TRANSACTIONAL=1 is used with handler that doesn't support it
  Indentation fixes
  ha_resolve_storage_engine_name() -> hton_name()
sql/sql_tablespace.cc:
  ha_resolve_storage_engine_name() -> hton_name()
  Indentation fixes
sql/sql_yacc.yy:
  ha_resolve_storage_engine_name() -> hton_name()
sql/unireg.cc:
  ha_resolve_storage_engine_name() -> hton_name()
  Indentation fixes
2008-02-11 20:55:04 +02:00
unknown
4d1cb99149 Fixed portability issue with comparing thread id
Fixed bug where return value 'error' was not set in case of error in pagecache
Documented the open LOAD INDEX bug


KNOWN_BUGS.txt:
  Added the problem with LOAD INDEX as a known bugs. Will fix this bug later this week
storage/maria/ma_pagecache.c:
  Fixed portability issue with comparing thread id
  Fixed bug where return value 'error' was not set in case of error
2008-01-31 08:48:49 +02:00
unknown
e4e8418ced Two bugs already fixed 2008-01-25 21:14:48 +01:00
unknown
978f3e3c3b Fixes to bugs and compiler warnings detected by pushbuild
Don't compare uuid's on maria_open() if table is not transactional
Fixed that my_microtime() works on windows (patch added from 5.1)


mysql-test/r/create.result:
  Portability fix
mysql-test/t/create.test:
  Portability fix
mysql-test/t/maria.test:
  Remove warnings, to make test portable to windows
mysys/my_getsystime.c:
  Add missed merge from 5.1
  This fixes that timing works on windows and fixes that that failed becasuse slow_query_log didn't get any queries
storage/maria/ma_check.c:
  Removed not needed setting of variable
storage/maria/ma_loghandler.c:
  Fixed compiler warnings
storage/maria/ma_open.c:
  Don't compare uuid's if table is not transactional
KNOWN_BUGS.txt:
  New BitKeeper file ``KNOWN_BUGS.txt''
2008-01-12 13:16:55 +02:00