lp:~laurynas-biveinis/percona-server/bug1269352-5.5

Created by Laurynas Biveinis on 2014-01-15 and last modified on 2014-01-15
Get this branch:
bzr branch lp:~laurynas-biveinis/percona-server/bug1269352-5.5
Only Laurynas Biveinis can upload to this branch. If you are Laurynas Biveinis please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Recent revisions

608. By Laurynas Biveinis on 2014-01-15

Fix bug 1269352 (InnoDB: failing assertion: buf_page_in_file(bpage)
below buf_flush_page_and_try_neighbors()), a follow-up to bug
1227581
.

The latter bug attempted to fix race conditions involving buffer
blocks in the middle of flush list relocations having
BUF_BLOCK_REMOVE_HASH state, but the fix was not fully
correct. buf_LRU_block_remove_hashed_page()/buf_LRU_free_block() will
ake a page BUF_BLOCK_REMOVE_HASH while holding an LRU list mutex, a
page hash X latch, and the block mutex.
buf_flush_page_and_try_neighbors() may hold a flush list mutex
instead. So, even though it checks for BUF_BLOCK_REMOVE_HASH pages,
there is nothing to protect the flushing candidate page from becoming
BUF_BLOCK_REMOVE_HASH after that check.

Fix by reverting BUF_BLOCK_REMOVE_HASH check in
buf_flush_page_and_try_neighbors() and adjusting it to accept
BUF_BLOCK_REMOVE_HASH pages until the mutex release before the
buf_flush_try_neighbors() call.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp:percona-server/5.6
This branch contains Public information 
Everyone can see this information.