diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2022-11-21 10:25:38 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2022-11-21 10:25:38 +0200 |
commit | b35a048ece4f5dd7c6757d86a303f27187a16117 (patch) | |
tree | 707189e5b00169b61b9ec13608625b938bd4f35b /storage/innobase/buf | |
parent | 91a7e9eb1ef9bfba6a1da5bca4a9b8c58a94c245 (diff) | |
parent | 5b1eb87b6fc9cd09d5a0ffcd926203700e035689 (diff) | |
download | mariadb-git-b35a048ece4f5dd7c6757d86a303f27187a16117.tar.gz |
Merge 10.8 into 10.9
Diffstat (limited to 'storage/innobase/buf')
-rw-r--r-- | storage/innobase/buf/buf0flu.cc | 14 |
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(); |