1. 29 Jan, 2008 1 commit
    • unknown's avatar
      BUG#26489 Corruption in relay logs · 5a039fa2
      unknown authored
      Here is the scenario that causes the failure.(by Mats)
      
      1. The to-be corrupt log event (let's call it X), is split into two
         packets B and C on the network level (net_write_buff()). The parts
         are X = (x',x''). The part x' ends up in packet B and part x''
         ends up in packet C. Prior to the corrupt event X, the event Y has
         been written successfully, but has been split into two packets as
         well, which we call (y',y'').
      2. The master sends packet A = (y'',x') to the slave, increases the
         packet sequence number, the slave receives the packet, but fails
         to reply before the master gets a timeout.
      3. Since the master got a timeout, it reports failure, and aborts
         sending the binary log by exiting mysql_binlog_send(). However, it
         leaves the buffer intact, still holding y'' (but not x', since the
         write_pos is not increased).
      4. After exiting mysql_binlog_send(), the master does a
         disconnection of the client thread, which involves sending an
         error message e to the client (i.e., the slave).
      5. In this case, net_write_buff() is used again, but this time the
         old contents of the packet is used so that the new packet is
         D = (y'',e). Note that this will use a new packet sequence number,
         since the packet number was increased in step 2.
      6. The slave receives the tail y'' of the Y log event, concatenates
         this with x' (which it already received), and writes the event
         (x',y'') it to the relay log since it hasn't noticed anything is
         amiss.
      7. It then tries to read more bytes, which is either e (if the length
         given for X just happened to match the length given for Y, or just
         plain garbage because the slave is out of sync with what is
         actually sent.
      8. After a while, the SQL thread tries to execute the event (x',y''),
         which is very likely to be just nonsense.
      
      The problem can be fixed by not resetting net->error after the call of 
      mysql_binlog_send, so the error message will not be sent and the connection
      will be closed.
      
      
      sql/sql_parse.cc:
        Do not reset net->error, if net->error == 2, we should not try to use the connection again
      5a039fa2
  2. 06 Jan, 2008 6 commits
  3. 02 Jan, 2008 1 commit
  4. 24 Dec, 2007 1 commit
  5. 23 Dec, 2007 1 commit
    • unknown's avatar
      bug#30435 · 46bfdbca
      unknown authored
      changes due to non-determinism in value of read_buffer_size.
      
      
      mysql-test/r/rpl_loaddata_map.result:
        results changed
      mysql-test/t/rpl_loaddata_map.test:
        showing only the fact that the buffer size is larger than the packet size.
      mysql-test/std_data/bug30435_10k_items.txt:
        data for bug#30435 regression testing
      mysql-test/std_data/bug30435_5k.txt:
        data for bug#30435 regression testing
      46bfdbca
  6. 22 Dec, 2007 1 commit
    • unknown's avatar
      bug#30435 · ff84f404
      unknown authored
      refining the test after it failed on pb.
      
      
      mysql-test/r/rpl_loaddata_map.result:
        results changed
      mysql-test/t/rpl_loaddata_map.test:
        refining the test
      ff84f404
  7. 21 Dec, 2007 8 commits
    • unknown's avatar
      Merge aelkin@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl · ce187c0d
      unknown authored
      into  koti.dsl.inet.fi:/home/elkin/MySQL/TEAM/FIXES/5.0/bug33435-load_data_read_buffer_size
      
      
      sql/sql_repl.cc:
        Auto merged
      ce187c0d
    • unknown's avatar
      BUG#30435 loading large LOAD DATA INFILE breaks slave with · 40d89c44
      unknown authored
                read_buffer_size set on master
      BUG#33413 show binlog events fails if binlog has event size of close
                to max_allowed_packet
      
      
      The size of Append_block replication event was determined solely by
      read_buffer_size whereas the rest of replication code deals with
      max_allowed_packet.
      When the former parameter was set to larger than the latter there were
      two artifacts: the master could not read events from binlog;
      show master events did not show.
      
      Fixed with 
      - fragmenting the used io-cached buffer into pieces each size of less
        than max_allowed_packet (bug#30435)
      - incrementing show-binlog-events handling thread's max_allowed_packet
        with the max estimated for the replication header size
      
      
      include/my_sys.h:
        accessor-macros added in order not to mess with the io cache's implementation
        details in code that merely exploits the io-cache.
      sql/sql_repl.cc:
        BUG#33413: incrementing thd->variables.max_allowed_packet with 
        the max estimation for the replication header size (from bug#19402);
        refactoring log_loaded_block() to fragment the io_cache buffer in case
         read_buffer_size > max_allowed_packet.
      mysql-test/r/rpl_loaddata_map.result:
        New BitKeeper file ``mysql-test/r/rpl_loaddata_map.result''
      mysql-test/t/rpl_loaddata_map-master.opt:
        specific options to trigger  BUG#30435,  BUG#33413 situations
      mysql-test/t/rpl_loaddata_map-slave.opt:
        max_allowed_packet to be compatible with the master's version.
      mysql-test/t/rpl_loaddata_map.test:
        regression tests for two bugs.
      40d89c44
    • unknown's avatar
      BUG#26395: if crash during autocommit update to transactional table on master, slave fails · b5d95f02
      unknown authored
      Now, every transaction (including autocommit transactions) start with
      a BEGIN and end with a COMMIT/ROLLBACK in the binlog.
      Added a test case, and updated lots of test case result files.
      
      
      mysql-test/t/rpl_transaction-master.opt:
        BitKeeper file /home/sven/bk/b26395-autocommit-xa/5.0-rpl/mysql-test/t/rpl_transaction-master.opt
      mysql-test/t/rpl_transaction-slave.opt:
        BitKeeper file /home/sven/bk/b26395-autocommit-xa/5.0-rpl/mysql-test/t/rpl_transaction-slave.opt
      mysql-test/r/mix_innodb_myisam_binlog.result:
        Updated result file
      mysql-test/r/multi_update.result:
        Updated result file
      mysql-test/r/rpl_transaction.result:
        New result file for new test case.
      mysql-test/r/sp_trans_log.result:
        Updated result file
      mysql-test/r/variables-big.result:
        Updated result file
      mysql-test/t/rpl_transaction.test:
        New test case.
      sql/log.cc:
         - Always write BEGIN and COMMIT around statements, even in autocommit
           mode.
         - Added comments for binlog_commit and binlog_rollback.
      sql/log_event.cc:
        Added debug trigger to avoid writing xid events to the binlog.
      b5d95f02
    • unknown's avatar
      Merge aelkin@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl · 0718fb66
      unknown authored
      into  koti.dsl.inet.fi:/home/elkin/MySQL/TEAM/FIXES/5.0/bug31359-future_gpos
      
      
      0718fb66
    • unknown's avatar
      Merge mail.hezx.com:/media/sda3/work/mysql/bkroot/mysql-5.0-rpl · 76159fdf
      unknown authored
      into  mail.hezx.com:/media/sda3/work/mysql/bkwork/bug#28908/5.0
      
      
      76159fdf
    • unknown's avatar
      Bug #31359 change_master sets group_master_log_pos twice, · 544781ad
      unknown authored
                  ignores future_group_master_log_p
      
      There was a redundant assignement. However, that's the only artifact.
      Wrt to future_group_master_log_position, there is no issue.
      The counter is supposed to be set at Log_event::exec_event().
      It's used only by Innodb for recovery purposes.
      
      
      sql/sql_repl.cc:
        removing a redundant line which arrived with the revision 1.102.1.7.
      544781ad
    • unknown's avatar
      Merge capulet.kindahl.net:/home/mats/devel/b12691-mysql-5.0-rpl · 9d7c0dda
      unknown authored
      into  capulet.kindahl.net:/home/mats/devel/fix-mysql-5.0-rpl
      
      
      9d7c0dda
    • unknown's avatar
      BUG#28908 Replication: set global server_id is not setting the session server_id · e2937d7f
      unknown authored
      When set the server-id dynamically, the server_id member of current thread is not updated.
      
      Update the server_id member of current thread after updated the global variable value.
      
      
      sql/set_var.cc:
        Update server_id of current thread
      mysql-test/r/rpl_server_id.result:
        Add test for BUG#28908
      mysql-test/t/rpl_server_id.test:
        Add test for BUG#28908
      e2937d7f
  8. 20 Dec, 2007 1 commit
    • unknown's avatar
      BUG#12691 (Exec_master_log_pos corrupted with SQL_SLAVE_SKIP_COUNTER): · 150590a0
      unknown authored
      Complementary patch since LOAD DATA INFILE was not covered in
      the previous patch.
      
      This patch adds a check so that the slave skip counter is not
      decreased to zero if seeing a BEGIN_LOAD_QUERY_EVENT,
      APPEND_BLOCK_EVENT, or CREATE_FILE_EVENT since these cannot
      end a group. The group is terminated by an EXECUTE_LOAD_QUERY_
      EVENT or DELETE_FILE_EVENT.
      
      
      mysql-test/r/rpl_slave_skip.result:
        Result change.
      mysql-test/t/rpl_slave_skip.test:
        Adding tests to test that the first event of a LOAD DATA INFILE
        can be skipped safely for both transactional and non-transactional
        tables. Also include a case that will generate a DELETE_FILE event
        last in the group, and this should be properly skipped as well.
      sql/slave.cc:
        Not decrementing slave skip counter to zero when seeing a
        BEGIN_LOAD_QUERY_EVENT, APPEND_BLOCK_EVENT, or CREATE_FILE_EVENT
        since these cannot end a group.
      150590a0
  9. 18 Dec, 2007 1 commit
    • unknown's avatar
      Fixed some test case for BUG#32205 · 024d7831
      unknown authored
      
      mysql-test/r/binlog_start_comment.result:
        update result
      mysql-test/r/mysqlbinlog2.result:
        Update result for BUG#32205
      mysql-test/t/binlog_start_comment.test:
        Reset master at the start of test, use a file instead of a pipe, do clean up
      024d7831
  10. 15 Dec, 2007 1 commit
    • unknown's avatar
      BUG#32205 Replaying statements from mysqlbinlog fails with a syntax error, replicates fine · 59035063
      unknown authored
      The reason of this bug is that when mysqlbinlog dumps a query, the query is written to
      output with a delimeter appended right after it, if the query string ends with a '--'
      comment, then the delimeter would be considered as part of the comment, if there are any
      statements after this query, then it will cause a syntax error.
      
      Start a newline before appending delimiter after a query string
      
      
      mysql-test/r/ctype_ucs_binlog.result:
        Update test result for BUG#32205
      mysql-test/r/mix_innodb_myisam_binlog.result:
        Update test result for BUG#32205
      mysql-test/r/mysqlbinlog.result:
        Update test result for BUG#32205
      mysql-test/r/rpl_charset.result:
        Update test result for BUG#32205
      mysql-test/r/rpl_timezone.result:
        Update test result for BUG#32205
      mysql-test/r/user_var-binlog.result:
        Update test result for BUG#32205
      mysql-test/t/mix_innodb_myisam_binlog.test:
        Fixed for BUG#32205
      sql/log_event.cc:
        Start a newline before appending delimiter after a query string
      mysql-test/r/binlog_start_comment.result:
        Add test for BUG#32205
      mysql-test/t/binlog_start_comment.test:
        Add test for BUG#32205
      59035063
  11. 11 Dec, 2007 1 commit
  12. 05 Dec, 2007 1 commit
    • unknown's avatar
      sql_string.cc: · c4faf61a
      unknown authored
        Fixing a wrong comment.
      
      
      sql/sql_string.cc:
        Fixing a wrong comment.
      c4faf61a
  13. 03 Dec, 2007 1 commit
    • unknown's avatar
      Bug#30998 Drop View breaks replication if view does not exist · df35f2c3
      unknown authored
        
      When executing drop view statement on the master, the statement is written
      into bin-log without checking for possible errors, so the statement would 
      always be bin-logged with error code cleared even if some error might occur, 
      for example, some of the views being dropped does not exist. This would cause 
      failure on the slave.
      
      Writing bin-log after check for errors, if at least one view has been dropped
      the query is bin-logged possible with an error.
      
      
      sql/sql_view.cc:
        Writing bin-log after check for errors, if at least one view has been dropped
        the query is bin-logged possible with an error.
      mysql-test/r/rpl_drop_view.result:
        Add test result for bug#30998
      mysql-test/t/rpl_drop_view.test:
        Add test for bug#30998
      df35f2c3
  14. 22 Nov, 2007 1 commit
  15. 14 Nov, 2007 3 commits
  16. 13 Nov, 2007 2 commits
  17. 12 Nov, 2007 1 commit
  18. 10 Nov, 2007 1 commit
    • unknown's avatar
      Adding build scripts for Solaris 10 on AMD64. · 7f84f426
      unknown authored
      
      BUILD/compile-solaris-amd64:
        Changing build script to be in line with the other build scripts
        using GCC.
      BUILD/compile-solaris-amd64-debug:
        Adding build script for Solaris 10 on AMD64.
      BUILD/compile-solaris-amd64-forte-debug:
        Adding build script for Solaris 10 on AMD64.
      BUILD/compile-solaris-amd64-forte:
        Adding build script for Solaris 10 on AMD64.
      7f84f426
  19. 09 Nov, 2007 3 commits
    • unknown's avatar
      Merge capulet.net:/home/bk/mysql-5.0-rpl · 9eb28b96
      unknown authored
      into  capulet.net:/home/mats/devel/b31793-mysql-5.0-rpl
      
      
      sql/log_event.cc:
        Auto merged
      9eb28b96
    • unknown's avatar
      Merge mkindahl@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl · d7bc28fc
      unknown authored
      into  capulet.net:/home/bk/mysql-5.0-rpl
      
      
      d7bc28fc
    • unknown's avatar
      BUG#31793 (log event corruption causes crash): · dc91bc74
      unknown authored
      When running mysqlbinlog on a 64-bit machine with a corrupt relay log,
      it causes mysqlbinlog to crash. In this case, the crash is caused
      because a request for 18446744073709534806U bytes is issued, which
      apparantly can be served on a 64-bit machine (speculatively, I assume)
      but this causes the memcpy() issued later to copy the data to segfault.
      
      The request for the number of bytes is caused by a computation
      of data_len - server_vars_len where server_vars_len is corrupt in such
      a sense that it is > data_len. This causes a wrap-around, with the
      the data_len given above.
      
      This patch adds a check that if server_vars_len is greater than
      data_len before the substraction, and aborts reading the event in
      that case marking the event as invalid. It also adds checks to see
      that reading the server variables does not go outside the bounds
      of the available space, giving a limited amount of integrity check.
      
      
      mysql-test/r/mysqlbinlog.result:
        Result change.
      mysql-test/t/mysqlbinlog.test:
        Adding test that it fails gracefully for a corrupt relay log.
      sql/log_event.cc:
        Adding check that status var length does not cause wrap-around
        when performing subtraction. Extending get_str_len_and_pointer() to
        check that the string can actually be read without reading outside
        bounds. Adding checks when reading server variables from the Query-
        log_event so that the variable can really be read. Abort reading
        and mark the event as invalid otherwise.
      mysql-test/std_data/corrupt-relay-bin.000624:
        BitKeeper file /home/mats/devel/b31793-mysql-5.0-rpl/mysql-test/std_data/corrupt-relay-bin.000624
      dc91bc74
  20. 06 Nov, 2007 4 commits
    • unknown's avatar
      Merge aelkin@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl · 6957e84e
      unknown authored
      into  koti.dsl.inet.fi:/home/elkin/MySQL/TEAM/FIXES/5.0/bug27571_asyn_killed_flags
      
      
      6957e84e
    • unknown's avatar
      bug#27571 · 0c1a085c
      unknown authored
      refining non-deterministic tests.
      The new Bug@32148 is in the way. Adjuting the tests to be somehow useful.
       
      
      
      mysql-test/r/binlog_killed.result:
        results changed
      mysql-test/t/binlog_killed.test:
        refining the tests as killing is inherently non-deterministic;
        leaving todos.
      0c1a085c
    • unknown's avatar
      Merge aelkin@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl · 0216fb0d
      unknown authored
      into  koti.dsl.inet.fi:/home/elkin/MySQL/TEAM/FIXES/5.0/bug28597-log_name_upgrade
      
      
      0216fb0d
    • unknown's avatar
      bug#27571 · d8c4501b
      unknown authored
      fixing tests
      
      
      mysql-test/r/binlog_killed_simulate.result:
        the new tests' result
      d8c4501b