• Marko Mäkelä's avatar
    MDEV-21351: Free processed recv_sys_t::blocks · 6d214415
    Marko Mäkelä authored
    Release memory as soon as redo log records are processed.
    
    Because the memory allocation and deallocation of parsed redo log
    records must be protected by recv_sys.mutex, it is better to avoid
    using a std::atomic field for bookkeeping.
    
    buf_page_t::access_time: Keep track of the recv_sys.pages record
    allocations. The most significant 16 bits will count allocated
    blocks (which were previously counted by buf_page_t::buf_fix_count
    in the debug version), and the least significant 16 bits indicate
    the number of allocated bytes in the block (which was previously
    managed in buf_block_t::modify_clock), which must be a positive
    number, up to innodb_page_size. The byte offset 65536 is represented
    as the value 0.
    
    recv_recover_page(): Let the caller erase the log.
    
    recv_validate_tablespace(): Acquire recv_sys_t::mutex.
    6d214415
log0recv.cc 108 KB