• Marko Mäkelä's avatar
    MDEV-23399: Remove buf_pool.flush_rbt · 46b1f500
    Marko Mäkelä authored
    Normally, buf_pool.flush_list must be sorted by
    buf_page_t::oldest_modification, so that log_checkpoint()
    can choose MIN(oldest_modification) as the checkpoint LSN.
    
    During recovery, buf_pool.flush_rbt used to guarantee the
    ordering. However, we can allow the buf_pool.flush_list to
    be in an arbitrary order during recovery, and simply ensure
    that it is in the correct order by the time a log checkpoint
    needs to be executed.
    
    recv_sys_t::apply(): To keep it simple, we will always flush the
    buffer pool at the end of each batch.
    
    Note that log_checkpoint() will invoke recv_sys_t::apply() in case
    a checkpoint is initiated during the last batch of recovery,
    when we already allow writes to data pages and the redo log.
    
    Reviewed by: Vladislav Vaintroub
    46b1f500
buf0buf.cc 139 KB