diff options
Diffstat (limited to 'storage/xtradb/buf/buf0flu.cc')
-rw-r--r-- | storage/xtradb/buf/buf0flu.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/storage/xtradb/buf/buf0flu.cc b/storage/xtradb/buf/buf0flu.cc index 168f0a438a6..09f07bbd696 100644 --- a/storage/xtradb/buf/buf0flu.cc +++ b/storage/xtradb/buf/buf0flu.cc @@ -305,6 +305,8 @@ buf_flush_init_flush_rbt(void) buf_flush_list_mutex_enter(buf_pool); + ut_ad(buf_pool->flush_rbt == NULL); + /* Create red black tree for speedy insertions in flush list. */ buf_pool->flush_rbt = rbt_create( sizeof(buf_page_t*), buf_flush_block_cmp); @@ -2220,7 +2222,7 @@ buf_flush_single_page_from_LRU( if (ready) { bool evict_zip; - evict_zip = !buf_LRU_evict_from_unzip_LRU(buf_pool);; + evict_zip = !buf_LRU_evict_from_unzip_LRU(buf_pool); freed = buf_LRU_free_page(bpage, evict_zip); @@ -2627,6 +2629,11 @@ page_cleaner_sleep_if_needed( ulint next_loop_time) /*!< in: time when next loop iteration should start */ { + /* No sleep if we are cleaning the buffer pool during the shutdown + with everything else finished */ + if (srv_shutdown_state == SRV_SHUTDOWN_FLUSH_PHASE) + return; + ulint cur_time = ut_time_ms(); if (next_loop_time > cur_time) { |