diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc index 1adf1f137d6..58596175681 100644 --- a/storage/innobase/srv/srv0srv.cc +++ b/storage/innobase/srv/srv0srv.cc @@ -2244,6 +2244,16 @@ srv_master_do_active_tasks(void) MONITOR_SRV_DICT_LRU_MICROSECOND, counter_time); } + /* The periodic log_checkpoint() call here makes it harder to + reproduce bugs in crash recovery or mariabackup --prepare, or + in code that writes the redo log records. Omitting the call + here should not affect correctness, because log_free_check() + should still be invoking checkpoints when needed. In a + production server, those calls could cause "furious flushing" + and stall the server. Normally we want to perform checkpoints + early and often to avoid those situations. */ + DBUG_EXECUTE_IF("ib_log_checkpoint_avoid", return;); + if (srv_shutdown_state != SRV_SHUTDOWN_NONE) { return; } @@ -2323,6 +2333,16 @@ srv_master_do_idle_tasks(void) MONITOR_INC_TIME_IN_MICRO_SECS( MONITOR_SRV_LOG_FLUSH_MICROSECOND, counter_time); + /* The periodic log_checkpoint() call here makes it harder to + reproduce bugs in crash recovery or mariabackup --prepare, or + in code that writes the redo log records. Omitting the call + here should not affect correctness, because log_free_check() + should still be invoking checkpoints when needed. In a + production server, those calls could cause "furious flushing" + and stall the server. Normally we want to perform checkpoints + early and often to avoid those situations. */ + DBUG_EXECUTE_IF("ib_log_checkpoint_avoid", return;); + if (srv_shutdown_state != SRV_SHUTDOWN_NONE) { return; }