• Daniele Sciascia's avatar
    MW-336 Avoid slave threads leaking · 364b15c0
    Daniele Sciascia authored
    This patch fixes two problems that may arise when changing the
    value of wsrep_slave_threads:
    
    1) Threads may be leaked if wsrep_slave_threads is changed
       repeatedly. Specifically, when changing the number of slave
       threads, we keep track of wsrep_slave_count_change, the
       number of slaves to start / stop. The problem arises when
       wsrep_slave_count_change is updated before slaves had a
       chance to exit (threads may take some time to exit, as they
       exit only after commiting one more replication event).
       The fix is to update wsrep_slave_count_change such that it
       reflects the number of threads that already exited or are
       scheduled to exit.
    
    2) Attempting to set out of range value for wsrep_slave_threads
       (below 1 / above 512) results in wsrep_slave_count_change to
       be computed based on the out of range value, even though a
       warning is generated and wsrep_slave_threads is set to a
       truncated value. wsrep_slave_count_change is computed in
       wsrep_slave_threads_check(), which is called before mysql
       checks for valid range. Fix is to update wsrep_count_change
       whenever wsrep_slave_threads is updated with a valid value.
    364b15c0
wsrep_var.cc 18.8 KB