diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2022-11-17 21:35:12 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2022-11-17 21:35:12 +0200 |
commit | f46efb4476d4cb7401ea73e4c452d9460bdd0f33 (patch) | |
tree | 7322dc983c668ea995631a4697d489a33db429e0 /storage/innobase/buf/buf0flu.cc | |
parent | 038cd5195612084542704f181695358e3b8959a8 (diff) | |
parent | d5332086d7aa1eaef9da5850d38dd1489fad7032 (diff) | |
download | mariadb-git-f46efb4476d4cb7401ea73e4c452d9460bdd0f33.tar.gz |
Merge 10.7 into 10.8
Diffstat (limited to 'storage/innobase/buf/buf0flu.cc')
-rw-r--r-- | storage/innobase/buf/buf0flu.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/storage/innobase/buf/buf0flu.cc b/storage/innobase/buf/buf0flu.cc index 31e523fa3ff..56ae36b4857 100644 --- a/storage/innobase/buf/buf0flu.cc +++ b/storage/innobase/buf/buf0flu.cc @@ -1712,6 +1712,14 @@ inline void log_t::write_checkpoint(lsn_t end_lsn) noexcept DBUG_PRINT("ib_log", ("checkpoint ended at " LSN_PF ", flushed to " LSN_PF, next_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, next_checkpoint_lsn); + overwrite_warned= 0; + } latch.wr_unlock(); } @@ -1884,6 +1892,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(); } } @@ -1898,6 +1907,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; @@ -2252,6 +2263,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); @@ -2335,6 +2347,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(); |