- 29 Jan, 2008 1 commit
-
-
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
-
- 06 Jan, 2008 6 commits
-
-
unknown authored
-
unknown authored
into mail.hezx.com:/media/sda3/work/mysql/bkwork/bug#32205/mysql-5.0-rpl
-
unknown authored
mysql-test/r/binlog_start_comment.result: Drop tables used in the test case when done mysql-test/r/blackhole.result: Mask out file_id in show binlog events output mysql-test/r/case.result: Drop table t2 too if it exists at the start of the test mysql-test/t/blackhole.test: Mask out file_id in show binlog events output mysql-test/t/case.test: Drop table t2 too if it exists at the start of the test
-
unknown authored
into mail.hezx.com:/media/sda3/work/mysql/bkwork/bug#32205/mysql-5.0-rpl
-
unknown authored
mysql-test/include/show_binlog_events2.inc: New BitKeeper file ``mysql-test/include/show_binlog_events2.inc''
-
unknown authored
into mail.hezx.com:/media/sda3/work/mysql/bkwork/bug#32205/mysql-5.0-rpl
-
- 02 Jan, 2008 1 commit
-
-
unknown authored
into riska.(none):/home/sven/bk/b26395-autocommit-xa/5.0-rpl
-
- 24 Dec, 2007 1 commit
-
-
unknown authored
into mail.hezx.com:/media/sda3/work/mysql/bkwork/bug#28908/mysql-5.0-rpl
-
- 23 Dec, 2007 1 commit
-
-
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
-
- 22 Dec, 2007 1 commit
-
-
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
-
- 21 Dec, 2007 8 commits
-
-
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
-
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.
-
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.
-
unknown authored
into koti.dsl.inet.fi:/home/elkin/MySQL/TEAM/FIXES/5.0/bug31359-future_gpos
-
unknown authored
into mail.hezx.com:/media/sda3/work/mysql/bkwork/bug#28908/5.0
-
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.
-
unknown authored
into capulet.kindahl.net:/home/mats/devel/fix-mysql-5.0-rpl
-
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
-
- 20 Dec, 2007 1 commit
-
-
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.
-
- 18 Dec, 2007 1 commit
-
-
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
-
- 15 Dec, 2007 1 commit
-
-
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
-
- 11 Dec, 2007 1 commit
-
-
unknown authored
into hezx.(none):/media/hda5/work/mysql/bkwork/bug#30998/5.0
-
- 05 Dec, 2007 1 commit
-
-
unknown authored
Fixing a wrong comment. sql/sql_string.cc: Fixing a wrong comment.
-
- 03 Dec, 2007 1 commit
-
-
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
-
- 22 Nov, 2007 1 commit
-
-
unknown authored
into capulet.kindahl.net:/home/bk/mysql-5.0-rpl
-
- 14 Nov, 2007 3 commits
- 13 Nov, 2007 2 commits
- 12 Nov, 2007 1 commit
-
-
unknown authored
Corrections to get_str_len_and_pointer(). sql/log_event.cc: Adding missing return at end of get_str_len_and_pointer() and correcting computation of missing bytes.
-
- 10 Nov, 2007 1 commit
-
-
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.
-
- 09 Nov, 2007 3 commits
-
-
unknown authored
into capulet.net:/home/mats/devel/b31793-mysql-5.0-rpl sql/log_event.cc: Auto merged
-
unknown authored
into capulet.net:/home/bk/mysql-5.0-rpl
-
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
-
- 06 Nov, 2007 4 commits
-
-
unknown authored
into koti.dsl.inet.fi:/home/elkin/MySQL/TEAM/FIXES/5.0/bug27571_asyn_killed_flags
-
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.
-
unknown authored
into koti.dsl.inet.fi:/home/elkin/MySQL/TEAM/FIXES/5.0/bug28597-log_name_upgrade
-
unknown authored
fixing tests mysql-test/r/binlog_killed_simulate.result: the new tests' result
-