• Manish Kumar's avatar
    BUG#11752315 - 43460: STOP SLAVE UNABLE TO COMPLETE WHEN SLAVE THREAD IS TRYING TO RECONNECT TO · e69da6dc
    Manish Kumar authored
    Problem : The basic problem is the way the thread sleeps in mysql-5.5 and also in mysql-5.1
              when we execute a stop slave on windows platform.
              On windows platform if the stop slave is executed after the master dies, we have 
              this long wait before the stop slave return a value. This is because there is a 
              sleep of the thread. The sleep is uninterruptable in the two above version,
              which was fixed by Davi patch for the BUG#11765860 for mysql-trunk. Backporting 
              his patch for mysql-5.5 fixes the problem. 
    
    Solution : A new pair of mutex and condition variable is introduced to synchronize thread 
               sleep and finalization. A new mutex is required because the slave threads are 
               terminated while holding the slave thread locks (run_lock), which can not be 
               relinquished during termination as this would affect the lock order.
    
    mysql-test/suite/rpl/r/rpl_start_stop_slave.result:
      The result file associated with the test added.
    mysql-test/suite/rpl/t/rpl_start_stop_slave.test:
      A test to check the new functionality.
    sql/rpl_mi.cc:
      The constructor using the new mutex and condition variables for the master_info.
    sql/rpl_mi.h:
      The condition variable and mutex have been added for the master_info.
    sql/rpl_rli.cc:
      The constructor using the new mutex and condition variables for the realy_log_info.
    sql/rpl_rli.h:
      The condition variable and mutex have been added for the relay_log_info.
    sql/slave.cc:
      Use a timed wait on a condition variable to implement a interruptible sleep. 
      The wait is registered with the THD object so that the thread will be woken 
      up if killed.
    e69da6dc
rpl_mi.cc 18.8 KB