• unknown's avatar
    "After Monty's review" changes to the fix for BUG#8325 "Deadlock in... · 832800cc
    unknown authored
    "After Monty's review" changes to the fix for BUG#8325 "Deadlock in replication thread stops replication":
    s/sleep/safe_sleep (thread safe); sleep 0/1/2/3/4/5/5/5 (get slave less late);
    no message on error log (deadlock is too common sometimes), a global counter
    instead (SHOW STATUS LIKE 'slave_retried_transactions').
    Plus a fix for libmysql/Makefile.shared
    
    
    libmysql/Makefile.shared:
      When we "make clean" in libmysql/ we remove the symlinks there, so we
      need to mark that they have to be recreated later: this is done by removing
      ../linked_libmysql_sources. If we don't do this, 'make' will fail after 'cd libmysql;make clean'.
      This Makefile.shared is used by libmysql_r too.
      No reason to remove linked_client_sources as we don't remove the links in client/.
    mysql-test/r/rpl_deadlock.result:
      result fix
    mysql-test/t/rpl_deadlock.test:
      small test addition
    sql/mysqld.cc:
      if active_mi could not be alloced, die. New SHOW STATUS LIKE "slave_retried_transactions".
    sql/slave.cc:
      If slave retries automatically a transaction, no message on error log
      (too common situation); sleep 0 secs at first retry, then 1, 2, 3, 4,
      5, 5, 5... Sleeping 0 is to get the least possible late, as deadlocks
      are usually resolved at first try. New global counter rli->retried_trans
      (for SHOW STATUS: total number of times the slave had to retry
      any transaction). safe_sleep() is thread-safe, sleep() was not.
      I change the rli->trans_retries counter to go from 0 to max instead
      of the other way (better for new sleep()).
    sql/slave.h:
      new global counter rli->retried_trans
    sql/sql_show.cc:
      SHOW STATUS LIKE "slave_retried_transactions"; needs replication mutexes.
      Can't be a simple SHOW_LONG, because active_mi is unset (not alloced yet)
      when the static global status_vars is created (active_mi is set
      in init_slave()).
    sql/structs.h:
      new SHOW_SLAVE_RETRIED_TRANS
    BitKeeper/etc/logging_ok:
      Logging to logging@openlogging.org accepted
    832800cc
slave.h 20.9 KB