summaryrefslogtreecommitdiff
path: root/storage/innobase/buf
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2022-11-17 21:35:12 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2022-11-17 21:35:12 +0200
commitf46efb4476d4cb7401ea73e4c452d9460bdd0f33 (patch)
tree7322dc983c668ea995631a4697d489a33db429e0 /storage/innobase/buf
parent038cd5195612084542704f181695358e3b8959a8 (diff)
parentd5332086d7aa1eaef9da5850d38dd1489fad7032 (diff)
downloadmariadb-git-f46efb4476d4cb7401ea73e4c452d9460bdd0f33.tar.gz
Merge 10.7 into 10.8
Diffstat (limited to 'storage/innobase/buf')
-rw-r--r--storage/innobase/buf/buf0flu.cc13
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();