innodb_adaptive_hash_index_partitions may cause hangup
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Percona Server moved to https://jira.percona.com/projects/PS |
Fix Released
|
High
|
Unassigned | ||
5.5 |
Fix Released
|
High
|
Unassigned |
Bug Description
innodb_
Sometimes I met the hangup at high-spec bencnhmarks.
The part of innodb_
+ } else if (btr_search_
+ rw_lock_t* btr_search_latch;
+
+ /* FIXME: This may be optimistic implementation still. */
+ btr_search_latch = (rw_lock_
+ if (UNIV_LIKELY(
+ if (block->is_hashed) {
+ goto retry;
+ }
+ return;
+ }
+ rw_lock_
is insufficient a little still.
Related branches
- Oleg Tsarev (community): Needs Fixing (dev)
- Percona developers: Pending requested
-
Diff: 11671 lines (+7079/-693)63 files modifiedMakefile (+2/-2)
control_online_alter_index.patch (+1/-1)
innodb_adaptive_hash_index_partitions.patch (+45/-27)
innodb_admin_command_base.patch (+1/-1)
innodb_buffer_pool_pages_i_s.patch (+3/-3)
innodb_buffer_pool_shm.patch (+7/-7)
innodb_deadlock_count.patch (+3/-3)
innodb_dict_size_limit.patch (+10/-10)
innodb_expand_import.patch (+597/-87)
innodb_extend_slow.patch (+35/-34)
innodb_extra_rseg.patch (+1/-1)
innodb_fake_changes.patch (+614/-0)
innodb_fast_checksum.patch (+33/-46)
innodb_files_extend.patch (+15/-24)
innodb_fix_misc.patch (+39/-39)
innodb_io_patches.patch (+39/-38)
innodb_lru_dump_restore.patch (+8/-8)
innodb_overwrite_relay_log_info.patch (+17/-18)
innodb_pass_corrupt_table.patch (+106/-100)
innodb_recovery_patches.patch (+10/-10)
innodb_separate_doublewrite.patch (+34/-34)
innodb_show_lock_name.patch (+6/-6)
innodb_show_status.patch (+15/-15)
innodb_show_status_extend.patch (+8/-8)
innodb_show_sys_tables.patch (+1/-1)
innodb_split_buf_pool_mutex.patch (+37/-26)
innodb_stats.patch (+31/-25)
innodb_thread_concurrency_timer_based.patch (+7/-7)
install_tests.sh.THIS (+35/-0)
log_connection_error.patch (+3/-3)
log_warnings_suppress.patch (+3/-3)
memory_dynamic_rows.patch (+2865/-0)
microsec_process.patch (+1/-1)
mysql-test/memory_dynamic_rows.patch/percona_heap_blob.result (+952/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_blob.test.disabled (+642/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug783366.result (+14/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug783366.test.disabled (+19/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug783451.result (+132/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug783451.test.disabled (+16/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug784464.result (+70/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug784464.test.disabled (+67/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug784468.result (+15/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug784468.test.disabled (+16/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug788544.result (+9/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug788544.test.disabled (+15/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug788576.result (+19/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug788576.test.disabled (+19/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug788722.result (+18/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug788722.test.disabled (+20/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug789131.result (+7/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_bug789131.test.disabled (+14/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_var.result (+194/-0)
mysql-test/memory_dynamic_rows.patch/percona_heap_var.test.disabled (+84/-0)
normalize_patches.sh (+1/-1)
optimizer_fix.patch (+2/-2)
processlist_row_stats.patch (+2/-2)
query_cache_enhance.patch (+2/-2)
response_time_distribution.patch (+8/-8)
show_slave_status_nolock.patch (+1/-1)
show_temp.patch (+6/-6)
slow_extended.patch (+17/-17)
sql_no_fcache.patch (+8/-8)
userstat.patch (+58/-58)
Changed in percona-server: | |
assignee: | nobody → Yasufumi Kinoshita (yasufumi-kinoshita) |
status: | New → Confirmed |
importance: | Undecided → Medium |
Changed in percona-server: | |
importance: | Medium → High |
status: | Confirmed → Triaged |
Changed in percona-server: | |
status: | Triaged → Fix Committed |
Changed in percona-server: | |
milestone: | none → 5.5.13-20.4 |
tags: | added: i26423 |
tags: | added: xtradb |
tags: | added: ahi-partitions |
Next problematic place is:
------- ------- ------- ------- ------- ------- ------- -
hash index semaphore! */
#ifndef UNIV_SEARCH_DEBUG has_search_ latch) { s_lock( &btr_search_ latch); search_ latch = TRUE; >has_search_ latch index_num) ))) { s_lock( btr_search_ get_latch( index-> id)); search_ latch |= index_num) ;
}
switch (row_sel_ try_search_ shortcut_ for_mysql( ------- ------- ------- ------- ------- ------- -
- if (!trx->
- rw_lock_
- trx->has_
+ if (!(trx-
+ & ((ulint)1 << (index->id % btr_search_
+ rw_lock_
+ trx->has_
+ (ulint)1 << (index->id % btr_search_
#endif
-------
We should decide explicit latch order between btr_search_ latch_part[ n], and rewrite patch to this function.
It is more possibly to cause hangup than the reported before.