1. 15 Jan, 2016 2 commits
    • Kristian Nielsen's avatar
      Merge branch 'tmp' into tmp-10.0 · 74b1af19
      Kristian Nielsen authored
      Conflicts:
      	sql/slave.cc
      74b1af19
    • Kristian Nielsen's avatar
      Fix error handling for GTID and domain-based parallel replication · 06b2e327
      Kristian Nielsen authored
      This occurs when replication stops with an error, domain-based parallel
      replication is used, and the GTID position contains more than one domain.
      Furthermore, it relates to the case where the SQL thread is restarted
      without first stopping the IO thread.
      
      In this case, the file/offset relay-log position does not correctly
      represent the slave's multi-dimensional position, because other domains may
      be far ahead of, or behind, the domain with the failing event. So the code
      reverts the relay log position back to the start of a relay log file that is
      known to be before all active domains.
      
      There was a bug that when the SQL thread was restarted, the
      rli->relay_log_state was incorrectly initialised from @@gtid_slave_pos. This
      position will likely be too far ahead, due to reverting the relay log
      position. Thus, if the replication fails again after the SQL thread restart,
      the rli->restart_gtid_pos might be updated incorrectly. This in turn would
      cause a second SQL thread restart to replicate from the wrong position, if
      the IO thread was still left running.
      
      The fix is to initialise rli->relay_log_state from @@gtid_slave_pos only
      when we actually purge and re-fetch relay logs from the master, not at every
      SQL thread start.
      
      A related problem is the use of sql_slave_skip_counter to resolve
      replication failures in this kind of scenario. Since the slave position is
      multi-dimensional, sql_slave_skip_counter can not work properly - it is
      indeterminate exactly which event is to be skipped, and is unlikely to work
      as expected for the user. So make this an error in the case where
      domain-based parallel replication is used with multiple domains, suggesting
      instead the user to set @@gtid_slave_pos to reliably skip the desired event.
      06b2e327
  2. 07 Jan, 2016 2 commits
  3. 03 Jan, 2016 3 commits
    • Monty's avatar
      Fixed bug in semi_sync replication tests. · 8fcc0bfe
      Monty authored
      The problem was that wait_for_slave_io_to_start reported that the io thread
      was ready, when it was still initializing. This caused test suite to
      continue too early, for example before the semi sync plugin was properly
      enabled.
      
      Fixed by introducing a new internal stage: "Preparing". Slave_IO_Running is
      now set to "Yes" only when all initializing is done and the IO thread is
      ready to read things from the master.
      
      The only test affected by this change is rpl_flsh_tbls, which got stuck in
      the preparing phase while trying to read the GTID position from a table.
      Fixed by having this test waiting for Preparing instead of Yes.
      8fcc0bfe
    • Monty's avatar
      Cleanup of slave code: · 661a6d89
      Monty authored
      - Added testing if connection is killed to shortcut reading of connection data
        This will allow us later in 10.2 to do a cleaner shutdown of slaves (less errors in the log)
      - Add new status variables: Slaves_connected, Slaves_running and Slave_connections.
      - Use MYSQL_SLAVE_NOT_RUN instead of 0 with slave_running.
      - Don't print obvious extra warnings to the error log when slave is shut down normally.
      661a6d89
    • Monty's avatar
      Backported fix for ccache · 4b4777ab
      Monty authored
      Fixed compiler warnings
      Added --big-test to tokudb change_column_char & change_column_bin
      4b4777ab
  4. 30 Dec, 2015 2 commits
  5. 29 Dec, 2015 7 commits
  6. 21 Dec, 2015 3 commits
  7. 19 Dec, 2015 6 commits
  8. 18 Dec, 2015 3 commits
  9. 16 Dec, 2015 3 commits
  10. 15 Dec, 2015 9 commits