Commit 8b5dddbc authored by unknown's avatar unknown

WL#3072 Maria recovery

Progress reports on stderr if doing recovery from ha_maria;
don't do checkpoints if activity since last checkpoint < 2MB
(no change in fact as background thread is disabled for now);
recovery trace is only if EXTRA_DEBUG now (better for benchmarks).


storage/maria/ma_checkpoint.c:
  don't do checkpoints if activity (log writes plus page flushes)
  since last checkpoint was < 2MB.
storage/maria/ma_recovery.c:
  progress reports in recovery (10%, transactions left to rollback etc);
  that is only if from ha_maria and is displayed on stderr.
  Recovery trace is now created only if EXTRA_DEBUG.
storage/maria/ma_test_recovery.expected:
  update (--debug gone)
storage/maria/ma_test_recovery:
  don't use --debug, as it can absent from binary
parent e57cccc6
...@@ -544,7 +544,9 @@ static int filter_flush_data_file_evenly(enum pagecache_page_type type, ...@@ -544,7 +544,9 @@ static int filter_flush_data_file_evenly(enum pagecache_page_type type,
pthread_handler_t ma_checkpoint_background(void *arg __attribute__((unused))) pthread_handler_t ma_checkpoint_background(void *arg __attribute__((unused)))
{ {
const uint sleep_unit= 1 /* 1 second */, const uint sleep_unit= 1 /* 1 second */,
time_between_checkpoints= 30; /* 30 sleep units */ time_between_checkpoints= 30, /* 30 sleep units */
/** @brief At least this of log/page bytes written between checkpoints */
checkpoint_min_activity= 2*1024*1024;
uint sleeps= 0; uint sleeps= 0;
my_thread_init(); my_thread_init();
...@@ -570,16 +572,17 @@ pthread_handler_t ma_checkpoint_background(void *arg __attribute__((unused))) ...@@ -570,16 +572,17 @@ pthread_handler_t ma_checkpoint_background(void *arg __attribute__((unused)))
in the checkpoint. in the checkpoint.
*/ */
/* /*
No checkpoint if no work of interest for recovery was done No checkpoint if little work of interest for recovery was done
since last checkpoint. Such work includes log writing (lengthens since last checkpoint. Such work includes log writing (lengthens
recovery, checkpoint would shorten it), page flushing (checkpoint recovery, checkpoint would shorten it), page flushing (checkpoint
would decrease the amount of read pages in recovery). would decrease the amount of read pages in recovery).
*/ */
if ((translog_get_horizon() == log_horizon_at_last_checkpoint) && if (((translog_get_horizon() - log_horizon_at_last_checkpoint) +
(pagecache_flushes_at_last_checkpoint == (maria_pagecache->global_cache_write -
maria_pagecache->global_cache_write)) pagecache_flushes_at_last_checkpoint) *
maria_pagecache->block_size) < checkpoint_min_activity)
{ {
/* safety against errors during flush by this thread: */ /* don't take checkpoint, so don't know what to flush */
pages_to_flush_before_next_checkpoint= 0; pages_to_flush_before_next_checkpoint= 0;
break; break;
} }
......
This diff is collapsed.
...@@ -131,7 +131,7 @@ do ...@@ -131,7 +131,7 @@ do
for test_undo in 1 2 3 for test_undo in 1 2 3
do do
# first iteration tests rollback of insert, second tests rollback of delete # first iteration tests rollback of insert, second tests rollback of delete
set -- "ma_test1 $silent -M -T -c -N $blobs" "--testflag=1" "--testflag=2 --test-undo=" "ma_test1 $silent -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace $blobs" "--testflag=3" "--testflag=4 --test-undo=" "ma_test1 $silent -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace $blobs" "--testflag=2" "--testflag=3 --test-undo=" "ma_test2 $silent -L -K -W -P -M -T -c $blobs" "-t1" "-t2 -u" set -- "ma_test1 $silent -M -T -c -N $blobs" "--testflag=1" "--testflag=2 --test-undo=" "ma_test1 $silent -M -T -c -N $blobs" "--testflag=3" "--testflag=4 --test-undo=" "ma_test1 $silent -M -T -c -N $blobs" "--testflag=2" "--testflag=3 --test-undo=" "ma_test2 $silent -L -K -W -P -M -T -c $blobs" "-t1" "-t2 -u"
# -N (create NULL fields) is needed because --test-undo adds it anyway # -N (create NULL fields) is needed because --test-undo adds it anyway
while [ $# != 0 ] while [ $# != 0 ]
do do
......
...@@ -125,9 +125,9 @@ Differences in maria_chk -dvv, recovery not yet perfect ! ...@@ -125,9 +125,9 @@ Differences in maria_chk -dvv, recovery not yet perfect !
--- ---
> 1 2 6 unique number NULL 0 8192 > 1 2 6 unique number NULL 0 8192
========DIFF END======= ========DIFF END=======
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace --testflag=3 (commit at end) TEST WITH ma_test1 -s -M -T -c -N --testflag=3 (commit at end)
Terminating after updates Terminating after updates
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace --testflag=4 --test-undo=1 (additional aborted work) TEST WITH ma_test1 -s -M -T -c -N --testflag=4 --test-undo=1 (additional aborted work)
Terminating after deletes Terminating after deletes
Dying on request without maria_commit()/maria_close() Dying on request without maria_commit()/maria_close()
applying log applying log
...@@ -150,9 +150,9 @@ Differences in maria_chk -dvv, recovery not yet perfect ! ...@@ -150,9 +150,9 @@ Differences in maria_chk -dvv, recovery not yet perfect !
--- ---
> 1 2 6 unique number NULL 0 8192 > 1 2 6 unique number NULL 0 8192
========DIFF END======= ========DIFF END=======
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace --testflag=2 (commit at end) TEST WITH ma_test1 -s -M -T -c -N --testflag=2 (commit at end)
Terminating after inserts Terminating after inserts
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace --testflag=3 --test-undo=1 (additional aborted work) TEST WITH ma_test1 -s -M -T -c -N --testflag=3 --test-undo=1 (additional aborted work)
Terminating after updates Terminating after updates
Dying on request without maria_commit()/maria_close() Dying on request without maria_commit()/maria_close()
applying log applying log
...@@ -300,9 +300,9 @@ Differences in maria_chk -dvv, recovery not yet perfect ! ...@@ -300,9 +300,9 @@ Differences in maria_chk -dvv, recovery not yet perfect !
--- ---
> 1 2 6 unique number NULL 0 8192 > 1 2 6 unique number NULL 0 8192
========DIFF END======= ========DIFF END=======
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace --testflag=3 (commit at end) TEST WITH ma_test1 -s -M -T -c -N --testflag=3 (commit at end)
Terminating after updates Terminating after updates
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace --testflag=4 --test-undo=2 (additional aborted work) TEST WITH ma_test1 -s -M -T -c -N --testflag=4 --test-undo=2 (additional aborted work)
Terminating after deletes Terminating after deletes
Dying on request without maria_commit()/maria_close() Dying on request without maria_commit()/maria_close()
applying log applying log
...@@ -325,9 +325,9 @@ Differences in maria_chk -dvv, recovery not yet perfect ! ...@@ -325,9 +325,9 @@ Differences in maria_chk -dvv, recovery not yet perfect !
--- ---
> 1 2 6 unique number NULL 0 8192 > 1 2 6 unique number NULL 0 8192
========DIFF END======= ========DIFF END=======
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace --testflag=2 (commit at end) TEST WITH ma_test1 -s -M -T -c -N --testflag=2 (commit at end)
Terminating after inserts Terminating after inserts
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace --testflag=3 --test-undo=2 (additional aborted work) TEST WITH ma_test1 -s -M -T -c -N --testflag=3 --test-undo=2 (additional aborted work)
Terminating after updates Terminating after updates
Dying on request without maria_commit()/maria_close() Dying on request without maria_commit()/maria_close()
applying log applying log
...@@ -475,9 +475,9 @@ Differences in maria_chk -dvv, recovery not yet perfect ! ...@@ -475,9 +475,9 @@ Differences in maria_chk -dvv, recovery not yet perfect !
--- ---
> 1 2 6 unique number NULL 0 8192 > 1 2 6 unique number NULL 0 8192
========DIFF END======= ========DIFF END=======
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace --testflag=3 (commit at end) TEST WITH ma_test1 -s -M -T -c -N --testflag=3 (commit at end)
Terminating after updates Terminating after updates
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace --testflag=4 --test-undo=3 (additional aborted work) TEST WITH ma_test1 -s -M -T -c -N --testflag=4 --test-undo=3 (additional aborted work)
Terminating after deletes Terminating after deletes
Dying on request without maria_commit()/maria_close() Dying on request without maria_commit()/maria_close()
applying log applying log
...@@ -500,9 +500,9 @@ Differences in maria_chk -dvv, recovery not yet perfect ! ...@@ -500,9 +500,9 @@ Differences in maria_chk -dvv, recovery not yet perfect !
--- ---
> 1 2 6 unique number NULL 0 8192 > 1 2 6 unique number NULL 0 8192
========DIFF END======= ========DIFF END=======
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace --testflag=2 (commit at end) TEST WITH ma_test1 -s -M -T -c -N --testflag=2 (commit at end)
Terminating after inserts Terminating after inserts
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace --testflag=3 --test-undo=3 (additional aborted work) TEST WITH ma_test1 -s -M -T -c -N --testflag=3 --test-undo=3 (additional aborted work)
Terminating after updates Terminating after updates
Dying on request without maria_commit()/maria_close() Dying on request without maria_commit()/maria_close()
applying log applying log
...@@ -650,9 +650,9 @@ Differences in maria_chk -dvv, recovery not yet perfect ! ...@@ -650,9 +650,9 @@ Differences in maria_chk -dvv, recovery not yet perfect !
--- ---
> 1 2 6 unique varchar BLOB NULL 0 8192 > 1 2 6 unique varchar BLOB NULL 0 8192
========DIFF END======= ========DIFF END=======
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace -b --testflag=3 (commit at end) TEST WITH ma_test1 -s -M -T -c -N -b --testflag=3 (commit at end)
Terminating after updates Terminating after updates
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace -b --testflag=4 --test-undo=1 (additional aborted work) TEST WITH ma_test1 -s -M -T -c -N -b --testflag=4 --test-undo=1 (additional aborted work)
Terminating after deletes Terminating after deletes
Dying on request without maria_commit()/maria_close() Dying on request without maria_commit()/maria_close()
applying log applying log
...@@ -675,9 +675,9 @@ Differences in maria_chk -dvv, recovery not yet perfect ! ...@@ -675,9 +675,9 @@ Differences in maria_chk -dvv, recovery not yet perfect !
--- ---
> 1 2 6 unique varchar BLOB NULL 0 8192 > 1 2 6 unique varchar BLOB NULL 0 8192
========DIFF END======= ========DIFF END=======
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace -b --testflag=2 (commit at end) TEST WITH ma_test1 -s -M -T -c -N -b --testflag=2 (commit at end)
Terminating after inserts Terminating after inserts
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace -b --testflag=3 --test-undo=1 (additional aborted work) TEST WITH ma_test1 -s -M -T -c -N -b --testflag=3 --test-undo=1 (additional aborted work)
Terminating after updates Terminating after updates
Dying on request without maria_commit()/maria_close() Dying on request without maria_commit()/maria_close()
applying log applying log
...@@ -825,9 +825,9 @@ Differences in maria_chk -dvv, recovery not yet perfect ! ...@@ -825,9 +825,9 @@ Differences in maria_chk -dvv, recovery not yet perfect !
--- ---
> 1 2 6 unique varchar BLOB NULL 0 8192 > 1 2 6 unique varchar BLOB NULL 0 8192
========DIFF END======= ========DIFF END=======
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace -b --testflag=3 (commit at end) TEST WITH ma_test1 -s -M -T -c -N -b --testflag=3 (commit at end)
Terminating after updates Terminating after updates
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace -b --testflag=4 --test-undo=2 (additional aborted work) TEST WITH ma_test1 -s -M -T -c -N -b --testflag=4 --test-undo=2 (additional aborted work)
Terminating after deletes Terminating after deletes
Dying on request without maria_commit()/maria_close() Dying on request without maria_commit()/maria_close()
applying log applying log
...@@ -850,9 +850,9 @@ Differences in maria_chk -dvv, recovery not yet perfect ! ...@@ -850,9 +850,9 @@ Differences in maria_chk -dvv, recovery not yet perfect !
--- ---
> 1 2 6 unique varchar BLOB NULL 0 8192 > 1 2 6 unique varchar BLOB NULL 0 8192
========DIFF END======= ========DIFF END=======
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace -b --testflag=2 (commit at end) TEST WITH ma_test1 -s -M -T -c -N -b --testflag=2 (commit at end)
Terminating after inserts Terminating after inserts
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace -b --testflag=3 --test-undo=2 (additional aborted work) TEST WITH ma_test1 -s -M -T -c -N -b --testflag=3 --test-undo=2 (additional aborted work)
Terminating after updates Terminating after updates
Dying on request without maria_commit()/maria_close() Dying on request without maria_commit()/maria_close()
applying log applying log
...@@ -1000,9 +1000,9 @@ Differences in maria_chk -dvv, recovery not yet perfect ! ...@@ -1000,9 +1000,9 @@ Differences in maria_chk -dvv, recovery not yet perfect !
--- ---
> 1 2 6 unique varchar BLOB NULL 0 8192 > 1 2 6 unique varchar BLOB NULL 0 8192
========DIFF END======= ========DIFF END=======
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace -b --testflag=3 (commit at end) TEST WITH ma_test1 -s -M -T -c -N -b --testflag=3 (commit at end)
Terminating after updates Terminating after updates
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace -b --testflag=4 --test-undo=3 (additional aborted work) TEST WITH ma_test1 -s -M -T -c -N -b --testflag=4 --test-undo=3 (additional aborted work)
Terminating after deletes Terminating after deletes
Dying on request without maria_commit()/maria_close() Dying on request without maria_commit()/maria_close()
applying log applying log
...@@ -1025,9 +1025,9 @@ Differences in maria_chk -dvv, recovery not yet perfect ! ...@@ -1025,9 +1025,9 @@ Differences in maria_chk -dvv, recovery not yet perfect !
--- ---
> 1 2 6 unique varchar BLOB NULL 0 8192 > 1 2 6 unique varchar BLOB NULL 0 8192
========DIFF END======= ========DIFF END=======
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace -b --testflag=2 (commit at end) TEST WITH ma_test1 -s -M -T -c -N -b --testflag=2 (commit at end)
Terminating after inserts Terminating after inserts
TEST WITH ma_test1 -s -M -T -c -N --debug=d:t:i:o,/tmp/ma_test1.trace -b --testflag=3 --test-undo=3 (additional aborted work) TEST WITH ma_test1 -s -M -T -c -N -b --testflag=3 --test-undo=3 (additional aborted work)
Terminating after updates Terminating after updates
Dying on request without maria_commit()/maria_close() Dying on request without maria_commit()/maria_close()
applying log applying log
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment