lp:~laurynas-biveinis/percona-server/bug1247021

Created by Laurynas Biveinis on 2013-11-27 and last modified on 2013-11-27
Get this branch:
bzr branch lp:~laurynas-biveinis/percona-server/bug1247021
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

503. By Laurynas Biveinis on 2013-11-27

Fix bug 1247021 (Assertion failure in file buf0buf.cc line 3687,
buf_page_init_for_read() w/ multiple purge threads and compressed
tables).

The issue is buf_page_init_for_read() adjusted for the buffer pool
mutex split incorrectly, visible in a combination of compressed
tables and multiple active purge threads, in 5.6 only.

In upstream, decrement of watch page fix count in
buf_pool_watch_unset() is protected by a combination of the relevant
page_hash X latch, buffer pool mutex, and possibly block mutex. In
XtraDB, buf_pool_watch_unset() locks page_hash X latch and then
either a block mutex or the zip mutex.

In upstream, the code path leading to the failing assert temporarily
releases page_hash latch around buf_buddy_alloc() call, which in turn
may release the buffer pool mutex too. If that happens, the watch
page is re-read from the page hash.

In the same code path in XtraDB, the buffer pool mutex was substituted
by the LRU list mutex and the logic was kept the same. Which is
incorrect, because page_hash unlock in itself is enough to necessitate
the page_hash recheck regardless of the LRU list mutex, because of
buf_pool_watch_unset() differences.

Fix by reducing the uses of local variable lru in
buf_page_init_for_read() to absolute minimum, i.e. arg to
buf_buddy_alloc(), and performing the watch_page re-check
unconditionally.

495. By Alexey Kopytov on 2013-11-12

Bug #1250148: log_block_checksum_is_ok_or_old_format() uses page not log
              block checksum algorithm

Fixed log_block_checksum_is_ok_or_old_format() to use
srv_log_checksum_algorithm instead of srv_checksum_algorithm.

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.