This issue is not fixed yet. Setting multiple AHI partitions (mostly with multiple buffer pools) triggers a lock deadlock.
--Thread 139558755972864 has waited at btr0sea.c line 1197 for 930.00 seconds the semaphore:
X-lock (wait_ex) on RW-latch at 0x9390f558 'btr_search_latch_part[i]'
a writer (thread id 139558755972864) has reserved it in mode wait exclusive
number of readers 1, waiters flag 1, lock_word: ffffffffffffffff
Last time read locked in file btr0sea.c line 1099
Last time write locked in file /home/jenkins/workspace/percona-server-5.5-rpms/label_exp/centos6-64/target/BUILD/Percona-Server-5.5.27-rel28.1/Percona-Server-5.5.27-rel28.1/storage/innobase/btr/btr0sea.c line 669
InnoDB: Warning: a long semaphore wait:
As you can see, 139558755972864 is waiting on itself.
The call chain is as follows: (will provide full trace later)
The suspect in question is btr_search_drop_page_hash_index, since it deals with multiple partitions differently, and the FIXME mentioned in the description is still present in the code.
=================================
if (btr_search_index_num > 1) {
rw_lock_t* btr_search_latch;
/* FIXME: This may be optimistic implementation still. */
btr_search_latch = (rw_lock_t*)(block->btr_search_latch);
if (UNIV_LIKELY(!btr_search_latch)) {
if (block->index) {
goto retry;
}
return;
}
......
..
=================================================
This issue is not fixed yet. Setting multiple AHI partitions (mostly with multiple buffer pools) triggers a lock deadlock.
--Thread 139558755972864 has waited at btr0sea.c line 1197 for 930.00 seconds the semaphore: latch_part[ i]' workspace/ percona- server- 5.5-rpms/ label_exp/ centos6- 64/target/ BUILD/Percona- Server- 5.5.27- rel28.1/ Percona- Server- 5.5.27- rel28.1/ storage/ innobase/ btr/btr0sea. c line 669
X-lock (wait_ex) on RW-latch at 0x9390f558 'btr_search_
a writer (thread id 139558755972864) has reserved it in mode wait exclusive
number of readers 1, waiters flag 1, lock_word: ffffffffffffffff
Last time read locked in file btr0sea.c line 1099
Last time write locked in file /home/jenkins/
InnoDB: Warning: a long semaphore wait:
As you can see, 139558755972864 is waiting on itself.
The call chain is as follows: (will provide full trace later)
pthread_ cond_wait event_wait_ low array_wait_ event lock_x_ lock_wait lock_x_ lock_low lock_x_ lock_func rw_lock_ x_lock_ func search_ drop_page_ hash_index LRU_free_ block LRU_free_ from_common_ LRU_list LRU_search_ and_free_ block LRU_get_ free_block search_ check_free_ space_in_ heap search_ info_update_ slow search_ info_update cur_search_ to_nth_ level pcur_open_ with_no_ init_func sel_try_ search_ shortcut_ for_mysql search_ for_mysql innobase: :index_ read join_record join_record join_record join_record join_record join_record sqlcom_ select execute_ command command handle_ one_connection one_connection
os_cond_wait
os_
sync_
rw_
rw_
rw_
pfs_
btr_
buf_
buf_
buf_
buf_
buf_block_alloc
btr_
btr_
btr_
btr_
btr_
row_
row_
ha_
join_read_key
sub_select
evaluate_
sub_select
evaluate_
sub_select
evaluate_
sub_select
evaluate_
sub_select
evaluate_
sub_select
evaluate_
sub_select
do_select
JOIN::exec
mysql_select
handle_select
execute_
mysql_
mysql_parse
dispatch_
do_
handle_
start_thread
clone
The suspect in question is btr_search_ drop_page_ hash_index, since it deals with multiple partitions differently, and the FIXME mentioned in the description is still present in the code.
======= ======= ======= ======= ===== index_num > 1) {
if (btr_search_
rw_lock_t* btr_search_latch;
/* FIXME: This may be optimistic implementation still. */ t*)(block- >btr_search_ latch); !btr_search_ latch)) { ======= ======= ======= ======= ======= =======
btr_search_latch = (rw_lock_
if (UNIV_LIKELY(
if (block->index) {
goto retry;
}
return;
}
......
..
=======
It has also been reported in lp:331659