summaryrefslogtreecommitdiff
path: root/storage/innobase/buf
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2022-11-21 10:25:38 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2022-11-21 10:25:38 +0200
commitb35a048ece4f5dd7c6757d86a303f27187a16117 (patch)
tree707189e5b00169b61b9ec13608625b938bd4f35b /storage/innobase/buf
parent91a7e9eb1ef9bfba6a1da5bca4a9b8c58a94c245 (diff)
parent5b1eb87b6fc9cd09d5a0ffcd926203700e035689 (diff)
downloadmariadb-git-b35a048ece4f5dd7c6757d86a303f27187a16117.tar.gz
Merge 10.8 into 10.9
Diffstat (limited to 'storage/innobase/buf')
-rw-r--r--storage/innobase/buf/buf0flu.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/storage/innobase/buf/buf0flu.cc b/storage/innobase/buf/buf0flu.cc
index 1b0f4ad64c1..6bf03d3e72a 100644
--- a/storage/innobase/buf/buf0flu.cc
+++ b/storage/innobase/buf/buf0flu.cc
@@ -1739,6 +1739,15 @@ inline void log_t::write_checkpoint(lsn_t end_lsn) noexcept
DBUG_PRINT("ib_log", ("checkpoint ended at " LSN_PF ", flushed to " LSN_PF,
checkpoint_lsn, get_flushed_lsn()));
+ if (overwrite_warned)
+ {
+ sql_print_information("InnoDB: Crash recovery was broken "
+ "between LSN=" LSN_PF
+ " and checkpoint LSN=" LSN_PF ".",
+ overwrite_warned, checkpoint_lsn);
+ overwrite_warned= 0;
+ }
+
lsn_t resizing_completed= 0;
if (resizing > 1 && resizing <= checkpoint_lsn)
@@ -1989,6 +1998,7 @@ ATTRIBUTE_COLD void buf_flush_wait_flushed(lsn_t sync_lsn)
record from a previous fil_names_clear() call, which we must
write out before we can advance the checkpoint. */
log_write_up_to(sync_lsn, true);
+ DBUG_EXECUTE_IF("ib_log_checkpoint_avoid_hard", return;);
log_checkpoint();
}
}
@@ -2003,6 +2013,8 @@ ATTRIBUTE_COLD void buf_flush_ahead(lsn_t lsn, bool furious)
if (recv_recovery_is_on())
recv_sys.apply(true);
+ DBUG_EXECUTE_IF("ib_log_checkpoint_avoid_hard", return;);
+
Atomic_relaxed<lsn_t> &limit= furious
? buf_flush_sync_lsn : buf_flush_async_lsn;
@@ -2357,6 +2369,7 @@ unemployed:
buf_pool.page_cleaner_set_idle(true);
DBUG_EXECUTE_IF("ib_log_checkpoint_avoid", continue;);
+ DBUG_EXECUTE_IF("ib_log_checkpoint_avoid_hard", continue;);
mysql_mutex_unlock(&buf_pool.flush_list_mutex);
@@ -2440,6 +2453,7 @@ do_checkpoint:
here should not affect correctness, because log_free_check()
should still be invoking checkpoints when needed. */
DBUG_EXECUTE_IF("ib_log_checkpoint_avoid", goto next;);
+ DBUG_EXECUTE_IF("ib_log_checkpoint_avoid_hard", goto next;);
if (!recv_recovery_is_on() && srv_operation == SRV_OPERATION_NORMAL)
log_checkpoint();