Commit c430aa72 authored by Marko Mäkelä's avatar Marko Mäkelä

MDEV-26626 InnoDB fails to advance the log checkpoint

buf_flush_page_cleaner(): Always try to advance the log checkpoint,
even when no pages were flushed during the latest batch.
Maybe, since the previous batch, there was an LRU flush that
removed the last dirty pages.

Failure to advance the log checkpoint will cause unnecessary work
in Mariabackup and on crash recovery.
parent 65cce297
...@@ -2266,6 +2266,15 @@ static os_thread_ret_t DECLARE_THREAD(buf_flush_page_cleaner)(void*) ...@@ -2266,6 +2266,15 @@ static os_thread_ret_t DECLARE_THREAD(buf_flush_page_cleaner)(void*)
unemployed: unemployed:
buf_flush_async_lsn= 0; buf_flush_async_lsn= 0;
buf_pool.page_cleaner_set_idle(true); buf_pool.page_cleaner_set_idle(true);
DBUG_EXECUTE_IF("ib_log_checkpoint_avoid", continue;);
mysql_mutex_unlock(&buf_pool.flush_list_mutex);
if (!recv_recovery_is_on() && srv_operation == SRV_OPERATION_NORMAL)
log_checkpoint();
mysql_mutex_lock(&buf_pool.flush_list_mutex);
continue; continue;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment