1. 28 Mar, 2013 2 commits
    • unknown's avatar
      MDEV-26: Global transaction ID. · 3080b0b9
      unknown authored
      Add tests crashing the slave in the middle of replication and checking that
      replication picks-up again on restart in a crash-safe way.
      
      Fix silly code that causes crash by inserting uninitialised data into a hash.
      3080b0b9
    • unknown's avatar
      MDEV-26: Global transaction ID. · 83a2b217
      unknown authored
      Fix some test case races and .result file updates, found with Buildbot.
      83a2b217
  2. 27 Mar, 2013 6 commits
    • unknown's avatar
      MDEV-26: Global transaction ID. · 2c5fa288
      unknown authored
      Test crashing the master, check that it recovers the binlog state.
      
      Fix one bug introduced by previous commit (crash-recoved binlog state was
      overwritten by loading stale binlog state file).
      
      Fix Windows build error.
      2c5fa288
    • unknown's avatar
      MDEV-26: Global transaction ID. · 0d401494
      unknown authored
      Implement test case rpl_gtid_stop_start.test to test normal stop and restart
      of master and slave mysqld servers.
      
      Fix a couple bugs found with the test:
      
       - When InnoDB is disabled (no XA), the binlog state was not read when master
         mysqld starts.
      
       - Remove old code that puts a bogus D-S-0 into the initial binlog state, it
         is not correct in current design.
      
       - Fix memory leak in gtid_find_binlog_file().
      0d401494
    • unknown's avatar
      MDEV-26: Global transaction ID. · e1ef3882
      unknown authored
      When slave requested to start at some GTID, and that GTID was the very
      last event (within its replication domain) in some binlog file, we did
      not allow the binlog dump thread on the master to start from the
      beginning of a following binlog file. This is a problem, since the
      binlog file containing the GTID is likely to be purged if the
      replication domain is unused for long.
      
      With this fix, if the Gtid list event at the start of a binlog file
      contains exactly the GTID requested by the slave, we allow to start
      the binlog dump thread from this file, taking care not to skip any
      events from that domain in the file.
      e1ef3882
    • unknown's avatar
      MDEV-26: Global transaction ID. · f5f88d4a
      unknown authored
      Fix bug that RESET SLAVE did not reset Using_Gtid back to 0.
      f5f88d4a
    • unknown's avatar
      MDEV-26: Global transaction ID. · e2d9e369
      unknown authored
      Fix MDEV-4329. When user does CHANGE MASTER TO
      MASTER_GTID_POS='<explicit GTID state>', we check that this state
      does not conflict with the binlog. But the code forgot to give an
      error in the case where a domain was completely missing from the
      requested position (eg. MASTER_GTID_POS='').
      e2d9e369
    • unknown's avatar
      MDEV-26: Global transaction ID. · 16319ee1
      unknown authored
      Silence compiler warning.
      16319ee1
  3. 26 Mar, 2013 3 commits
    • unknown's avatar
      MDEV-26: Global transaction ID. · 3cc960f3
      unknown authored
      Fix missing error check for applying Gtid_log_event.
      
      Fix a couple compiler warnings.
      3cc960f3
    • unknown's avatar
      MDEV-26: Global transaction ID. · 9e8f0643
      unknown authored
      Fix remaining two sporadic test failures in the full test suite:
      
       - Remove crash in DBUG_ASSERT() in _db_flush() (bug also exists in main
         tree).
      
       - Fix locking order violation for LOCK_status by temporarily unlocking it
         while locking LOCK_active_mi (like a similar fix for
         LOCK_global_variables).
      9e8f0643
    • unknown's avatar
      MDEV-26: Global transaction ID · 13173a2f
      unknown authored
      Adjust full test suite to work with GTID.
      
      Huge patch, mainly due to having to update .result file for all SHOW BINLOG
      EVENTS and mysqlbinlog outputs, where the new GTID events pop up.
      
      Everything was painstakingly checked to be still correct and valid .result
      file updates.
      13173a2f
  4. 22 Mar, 2013 2 commits
  5. 21 Mar, 2013 3 commits
    • unknown's avatar
      MDEV-26: Global transaction ID. · 7be5a0a5
      unknown authored
      Fix error handling when record_gtid() fails to update the
      mysql.rpl_slave_state table.
      7be5a0a5
    • unknown's avatar
      MDEV-26: Global transaction ID. · 9cc90fac
      unknown authored
      Fix MDEV-4278: Slave does not check that master understands GTID.
      
      Now the slave will abort with a suitable error if an attempt is made to connect
      with GTID to a master that does not support GTID.
      9cc90fac
    • unknown's avatar
      MDEV-26: Global transaction ID. · 365b91a5
      unknown authored
      Fix MDEV-4275 - I/O thread restart duplicates events in the relay log.
      The first time we connect to master after CHANGE MASTER or restart, we connect
      from the GTID position. But then subsequent reconnects or IO thread restarts
      reconnect with the old-style file/offset binlog pos from where it left off at
      last disconnect. This is necessary to avoid duplicate events in the relay
      logs, as there is nothing that synchronises the SQL thread update of GTID
      state (multiple threads in case of multi-source) with IO thread reconnects.
      
      Test cases.
      
      Some small cleanups and fixes.
      365b91a5
  6. 18 Mar, 2013 1 commit
    • unknown's avatar
      MDEV-26: Global transaction ID. · 41c0f2b9
      unknown authored
      Fix things so that a master can switch with MASTER_GTID_POS=AUTO to a slave
      that was previously running with log_slave_updates=0, by looking into the
      slave replication state on the master when the slave requests something not
      present in the binlog.
      
      Be a bit more strict about what position the slave can ask for, to avoid some
      easy-to-hit misconfiguration errors.
      
      Start over with seq_no counter when RESET MASTER.
      41c0f2b9
  7. 14 Mar, 2013 1 commit
    • unknown's avatar
      MDEV-26: Global transaction ID. · b7d80a54
      unknown authored
      After-rebase fixes. Rebase was done to be able to build on top
      of the binlog background thread of MDEV-532.
      b7d80a54
  8. 11 Mar, 2013 4 commits
    • unknown's avatar
      MDEV-26: Global transaction ID. · 516a2428
      unknown authored
      Add a missing check for correct table definition.
      516a2428
    • unknown's avatar
      MDEV-26: Global Transaction ID. · a6627fb0
      unknown authored
      Move a bunch of GTID specific code into new file rpl_gtid.cc. Make libmysqld build.
      a6627fb0
    • unknown's avatar
      MDEV-26: Global Transaction ID. · 86405b6a
      unknown authored
      Improvements to record_gtid():
      
       - Check for correct table definition of mysql.rpl_slave_state
       - Use autocommit, to save one call to ha_commit_trans()
       - Slightly more efficient way to set table->write_set
       - Use ha_index_read_map() to locate rows to support any storage engine.
      86405b6a
    • unknown's avatar
      MDEV-26: Global transaction ID. · 2cb9df39
      unknown authored
      Extend table definition checking to also be able to check for correct
      definition of the primary key.
      2cb9df39
  9. 27 Feb, 2013 2 commits
    • unknown's avatar
      MDEV-26: Global Transaction ID · 97bbe09b
      unknown authored
      Fix that CHANGE MASTER ... MASTER_GTID_POS="" works to start from the very
      beginning of the binary log (with test case).
      
      Fix that not finding the requested GTID position in master binlog results in
      fatal error, not endless connect retry.
      97bbe09b
    • unknown's avatar
      MDEV-26: Global Transaction ID. · 0ec0cd78
      unknown authored
      Add test case demonstrating multi-source replication with GTID.
      
      Test that we can move from being slave of two masters to be a slave
      deeper down in the hierarchy (of a higher-up multi-source slave),
      and vice versa.
      0ec0cd78
  10. 26 Feb, 2013 1 commit
    • unknown's avatar
      MDEV-26: Global transaction ID. · 209cfcb4
      unknown authored
      Remove the two-component form of GTID with implicit domain_id=0, as it
      is likely to cause more confusion than help.
      
      Give a better error for CHANGE MASTER ... MASTER_GTID_POS='gtid,gitd,...'
      when two specified GTIDs have conflicting domain_id.
      209cfcb4
  11. 25 Feb, 2013 1 commit
    • unknown's avatar
      MDEV-26: Global transaction ID · f62a8ead
      unknown authored
      Fix lock order violation. Make sure we temporarily release
      LOCK_global_system_variables before taking LOCK_active_mi.
      Otherwise we get a lock dependency cycle when we use
      open_tables() under LOCK_active_mi.
      f62a8ead
  12. 22 Feb, 2013 2 commits
    • unknown's avatar
      MDEV-26: Global Transaction ID · 6d880a8c
      unknown authored
       - Fix skipping initial MyISAM DML when connecting using GTID.
      
       - Fix RESET MASTER not clearing in-memory binlog state.
      
       - Fix not reading standalone flag in Gtid_log_event::peek().
      
       - Fix skipping DDL that the slave has already seen when using GTID position.
      6d880a8c
    • unknown's avatar
      MDEV-26: Global Transaction ID · e4ca32fb
      unknown authored
       - Fix that binlog_gtid_pos() (and hence slave connect) does not work
         correctly in the very first binlog file (due to not logging empty
         Gtid_list_log_event).
      
       - Remove one instance of the stupid domain_id-0-is-implicit.
      
       - Rename the confusing Gtid_Pos_Auto in SHOW SLAVE STATUS to Using_Gtid.
      
       - Fix memory leak.
      e4ca32fb
  13. 21 Feb, 2013 2 commits
    • unknown's avatar
      MDEV-26: Global transaction ID. · 27fb2c3e
      unknown authored
      Fix crash in binlog_gtid_pos('', 4) (and thus slave connect) when master does not
      have binlog enabled.
      27fb2c3e
    • unknown's avatar
      MDEV-26: Global transaction ID · 9a165459
      unknown authored
       - Add first basic mysql-test-run test case which tests switch to new master
         using MASTER_GTID_POS=AUTO.
      
       - When we connect with GTID, do not use any old relay logs, as they may
         contain the wrong events or be corrupt after crash.
      
       - Fix old bug that fails replication if we receive a heartbeat event
         immediately after an event was omitted in the stream from the master.
      
       - Fix rpl_end to clear Gtid_Pos_Auto, to keep check_testcase happy.
      9a165459
  14. 19 Feb, 2013 2 commits
  15. 18 Feb, 2013 1 commit
    • unknown's avatar
      MDEV-26: Global transaction ID. · 46025b3b
      unknown authored
      Fix initial loading of mysql.rpl_slave_state, the code had several
      issues.
      
      Some very basic MTR stuff, more to come.
      46025b3b
  16. 15 Feb, 2013 3 commits
  17. 14 Feb, 2013 1 commit
    • unknown's avatar
      MDEV-26: Global transaction ID. · 88b9c0ca
      unknown authored
      Slave now loads the GTID state from the master when connecting with
      old-style filename/offset position.
      
      This allows the user to use MASTER_GTID_POS=AUTO on next CHANGE MASTER
      without any other action needed.
      88b9c0ca
  18. 13 Feb, 2013 1 commit
    • unknown's avatar
      MDEV-26. Intermediary commit. · 5c39e6a5
      unknown authored
      Fix binlog_gtid_pos() to handle empty file name, and to not allow user
      to open arbitrary file on the system.
      5c39e6a5
  19. 11 Feb, 2013 1 commit
    • unknown's avatar
      MDEV-26. Intermediate commit. · c0454433
      unknown authored
      Implement binlog_gtid_pos() function. This will be used so that
      the slave can obtain the gtid position automatically from first
      connect with old-style position - then MASTER_GTID_POS=AUTO will
      work the next time. Can also be used by mysqldump --master-data
      to give the current gtid position directly.
      c0454433
  20. 25 Jan, 2013 1 commit