• Marko Mäkelä's avatar
    MDEV-27983: InnoDB hangs after loading a ROW_FORMAT=COMPRESSED page · 92032499
    Marko Mäkelä authored
    If multiple threads invoke buf_page_get_low() on a ROW_FORMAT=COMPRESSED
    page that does not reside in the buffer pool, then one of the threads
    will end up acquiring an exclusive page latch (the "if" statement
    right before the new wait_for_unzip: label) and other threads will
    end up waiting for a shared latch while holding a buffer-fix.
    The exclusive latch holder would then wait for the buffer-fixes to
    be released while the buffer-fix holders are waiting for the shared latch.
    
    buf_page_get_low(): Prevent the hang that was introduced
    in commit 9436c778 (MDEV-27058),
    by releasing the buffer-fix, sleeping some time, and retrying the
    page lookup.
    92032499
buf0buf.cc 118 KB