• Jan Lindström's avatar
    MDEV-7100: InnoDB error monitor might unnecessary wait log_sys mutex · 8c7ef99b
    Jan Lindström authored
    Analysis: InnoDB error monitor is responsible to call every second
    sync_arr_wake_threads_if_sema_free() to wake up possible hanging 
    threads if they are missed in mutex_signal_object. This is not 
    possible if error monitor itself is on mutex/semaphore wait. We 
    should avoid all unnecessary mutex/semaphore waits on error monitor.
    Currently error monitor calls function buf_flush_stat_update() 
    that calls log_get_lsn() function and there we will try to get 
    log_sys mutex. Better, solution for error monitor is that in 
    buf_flush_stat_update() we will try to get lsn with 
    mutex_enter_nowait() and if we did not get mutex do not update 
    the stats.
    
    Fix: Use log_get_lsn_nowait() function on buf_flush_stat_update()
    function. If returned lsn is 0, we do not update flush stats. 
    log_get_lsn_nowait() will use mutex_enter_nowait() and if
    we get mutex we return a correct lsn if not we return 0.
    8c7ef99b
buf0flu.c 65.8 KB