diff options
Diffstat (limited to 'storage/innobase/buf/buf0buf.cc')
-rw-r--r-- | storage/innobase/buf/buf0buf.cc | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc index 4703df3d33c..bc8347e4f31 100644 --- a/storage/innobase/buf/buf0buf.cc +++ b/storage/innobase/buf/buf0buf.cc @@ -5567,7 +5567,15 @@ buf_page_create( buf_block_free(free_block); - return(buf_page_get_with_no_latch(page_id, page_size, mtr)); + if (!recv_recovery_is_on()) { + return buf_page_get_with_no_latch(page_id, page_size, + mtr); + } + + mutex_exit(&recv_sys->mutex); + block = buf_page_get_with_no_latch(page_id, page_size, mtr); + mutex_enter(&recv_sys->mutex); + return block; } /* If we get here, the page was not in buf_pool: init it there */ @@ -5633,7 +5641,9 @@ buf_page_create( /* Delete possible entries for the page from the insert buffer: such can exist if the page belonged to an index which was dropped */ - ibuf_merge_or_delete_for_page(NULL, page_id, &page_size, TRUE); + if (!recv_recovery_is_on()) { + ibuf_merge_or_delete_for_page(NULL, page_id, &page_size, TRUE); + } frame = block->frame; @@ -5648,6 +5658,7 @@ buf_page_create( (3) key_version on encrypted pages (not page 0:0) */ memset(frame + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION, 0, 8); + memset(frame + FIL_PAGE_LSN, 0, 8); #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG ut_a(++buf_dbg_counter % 5771 || buf_validate()); |