• Marko Mäkelä's avatar
    MDEV-32861 InnoDB hangs when running out of I/O slots · 78c9a12c
    Marko Mäkelä authored
    When the constant OS_AIO_N_PENDING_IOS_PER_THREAD is changed from 256 to 1
    and the server is run with the minimum parameters
    innodb_read_io_threads=1 and innodb_write_io_threads=2, two hangs
    were observed.
    
    tpool::cache<T>::put(T*): Ensure that get() in io_slots::acquire()
    will be woken up when the cache previously was empty.
    
    buf_pool_t::io_buf_t::reserve(): Schedule a possibly partial doublewrite
    batch so that os_aio_wait_until_no_pending_writes() has a chance of
    returning. Add a Boolean parameter and pass wait_for_reads=false inside
    buf_page_decrypt_after_read(), because those calls will be executed
    inside a read completion callback, and therefore
    os_aio_wait_until_no_pending_reads() would block indefinitely.
    78c9a12c
buf0buf.h 78.7 KB