• Jan Lindström's avatar
    MDEV-6933: Spurious lock_wait_timeout_thread wakeup in lock_wait_suspend_thread() · 7e71dfa9
    Jan Lindström authored
    Merged Facebooks commit 6e06bbfa315ffb97d713dd6e672d6054036ddc21
    authored by Inaam Rana from https://github.com/facebook/mysql-5.6.
    
    Fixes MySQL bug http://bugs.mysql.com/bug.php?id=72123
    
    lock_timeout thread works in a tight loop waking up every second
    and checking for lock_wait_timeout. In addition, when a mysql
    thread is forced to wait on a lock, it signals the lock_timeout thread
    as well. This call is not required. In a heavily contended workload
    each thread going to wait will signal the lock_timeout thread making
    it work all the time. As lock_timeout thread scans the array of
    waiting threads under lock_sys::wait_mutex which is already very
    hot in contneded loads, these extra scans can cause significanct
    performance regression.
    
    Also, in various codepaths lock_timeout thread is signalled where
    actual intention was to signal the innodb monitor thread.
    7e71dfa9
lock0wait.cc 13.7 KB