• mariadb-DebarunBanerjee's avatar
    MDEV-34167 We fail to terminate transaction early with ER_LOCK_TABLE_FULL when... · 2d5cba22
    mariadb-DebarunBanerjee authored
    MDEV-34167 We fail to terminate transaction early with ER_LOCK_TABLE_FULL when lock memory is growing
    
    This regression is introduced in 10.6 by following commit.
    commit b6a24724
    MDEV-27891: SIGSEGV in InnoDB buffer pool resize
    
    During DML, we check if buffer pool is running out of data pages in
    buf_pool_t::running_out. Here is 75% of the buffer pool is occupied by
    non-data pages we rollback the current transaction and exit with
    ER_LOCK_TABLE_FULL.
    
    The integer division (n_chunks_new / 4) becomes zero whenever the total
    number of chunks are < 4 making the check completely ineffective for
    such cases. Also the check is inaccurate for larger chunks.
    
    Fix-1: Correct the check in buf_pool_t::running_out.
    
    Fix-2: While waiting for free page, check for
    buf_LRU_check_size_of_non_data_objects.
    2d5cba22
buf0buf.h 71.2 KB