Skip to content
Permalink
Browse files
MDEV-23839 innodb_fast_shutdown=0 hang on change buffer merge
ibuf_merge_or_delete_for_page(): Do not attempt to invoke
ibuf_delete_recs() on a page of the change buffer itself.
The caller could already be holding ibuf->index->lock,
and an attempt to acquire it in S mode would hang the release server
or cause an assertion failure in rw_lock_s_lock_func() in a debug
server.

This problem was reproducible on 1 out of 2 runs of the following:
./mtr --no-reorder \
innodb.innodb-page_compression_default \
innodb.innodb-page_compression_snappy \
innodb.innodb-page_compression_zip \
innodb.innodb_wl6326_big innodb.xa_recovery
  • Loading branch information
dr-m committed Sep 29, 2020
1 parent a441b06 commit 74bd368
Showing 1 changed file with 4 additions and 1 deletion.
@@ -4472,7 +4472,10 @@ ibuf_merge_or_delete_for_page(

fil_space_release(space);
if (UNIV_UNLIKELY(srv_shutdown_state)
&& !srv_fast_shutdown) {
&& !srv_fast_shutdown
&& (!block
|| btr_page_get_index_id(block->frame)
!= DICT_IBUF_ID_MIN + IBUF_SPACE_ID)) {
/* Prevent an infinite loop on slow
shutdown, in case the bitmap bits are
wrongly clear even though buffered

0 comments on commit 74bd368

Please sign in to comment.