From b7af4c5b25e8ae6768a35b5ddf296d41642f6785 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 11 Jul 2007 04:33:19 +0200 Subject: [PATCH 1/2] Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB Streamlining test for RBR --- .../suite/binlog/r/binlog_row_binlog.result | 109 ------------------ 1 file changed, 109 deletions(-) diff --git a/mysql-test/suite/binlog/r/binlog_row_binlog.result b/mysql-test/suite/binlog/r/binlog_row_binlog.result index 37fe49e79dc..1d1656889f4 100644 --- a/mysql-test/suite/binlog/r/binlog_row_binlog.result +++ b/mysql-test/suite/binlog/r/binlog_row_binlog.result @@ -258,117 +258,8 @@ master-bin.000001 419 Table_map 1 458 table_id: # (test.t1) master-bin.000001 458 Write_rows 1 492 table_id: # flags: STMT_END_F master-bin.000001 492 Xid 1 519 COMMIT /* XID */ master-bin.000001 519 Query 1 595 use `test`; drop table t1 -set autocommit= 1; -reset master; -create table t1(n int) engine=innodb; -insert into t1 values (1); -insert into t1 values (2); -insert into t1 values (3); -commit; -drop table t1; -show binlog events from 0; -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 -master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb -master-bin.000001 205 Table_map 1 244 table_id: # (test.t1) -master-bin.000001 244 Write_rows 1 278 table_id: # flags: STMT_END_F -master-bin.000001 278 Xid 1 305 COMMIT /* XID */ -master-bin.000001 305 Table_map 1 344 table_id: # (test.t1) -master-bin.000001 344 Write_rows 1 378 table_id: # flags: STMT_END_F -master-bin.000001 378 Xid 1 405 COMMIT /* XID */ -master-bin.000001 405 Table_map 1 444 table_id: # (test.t1) -master-bin.000001 444 Write_rows 1 478 table_id: # flags: STMT_END_F -master-bin.000001 478 Xid 1 505 COMMIT /* XID */ -master-bin.000001 505 Query 1 581 use `test`; drop table t1 -reset master; -create table t1(n int) engine=myisam; -begin; -insert into t1 values (4); -insert into t1 values (5); -insert into t1 values (6); -commit; -drop table t1; -show binlog events from 0; -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 -master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=myisam -master-bin.000001 205 Table_map 1 244 table_id: # (test.t1) -master-bin.000001 244 Write_rows 1 278 table_id: # flags: STMT_END_F -master-bin.000001 278 Table_map 1 317 table_id: # (test.t1) -master-bin.000001 317 Write_rows 1 351 table_id: # flags: STMT_END_F -master-bin.000001 351 Table_map 1 390 table_id: # (test.t1) -master-bin.000001 390 Write_rows 1 424 table_id: # flags: STMT_END_F -master-bin.000001 424 Query 1 500 use `test`; drop table t1 -set autocommit= 1; -reset master; -create table t1(n int) engine=innodb; -show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 205 -insert into t1 values (1); -show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 305 -insert into t1 values (2); -insert into t1 values (3); -show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 505 -commit; -show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 505 -drop table t1; -show binlog events from 0; -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 -master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb -master-bin.000001 205 Table_map 1 244 table_id: # (test.t1) -master-bin.000001 244 Write_rows 1 278 table_id: # flags: STMT_END_F -master-bin.000001 278 Xid 1 305 COMMIT /* XID */ -master-bin.000001 305 Table_map 1 344 table_id: # (test.t1) -master-bin.000001 344 Write_rows 1 378 table_id: # flags: STMT_END_F -master-bin.000001 378 Xid 1 405 COMMIT /* XID */ -master-bin.000001 405 Table_map 1 444 table_id: # (test.t1) -master-bin.000001 444 Write_rows 1 478 table_id: # flags: STMT_END_F -master-bin.000001 478 Xid 1 505 COMMIT /* XID */ -master-bin.000001 505 Query 1 581 use `test`; drop table t1 -set autocommit= 0; -reset master; -create table t1(n int) engine=myisam; -show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 205 -insert into t1 values (4); -show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 278 -insert into t1 values (5); -insert into t1 values (6); -show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 424 -commit; -show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 424 -drop table t1; -show binlog events from 0; -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 -master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=myisam -master-bin.000001 205 Table_map 1 244 table_id: # (test.t1) -master-bin.000001 244 Write_rows 1 278 table_id: # flags: STMT_END_F -master-bin.000001 278 Table_map 1 317 table_id: # (test.t1) -master-bin.000001 317 Write_rows 1 351 table_id: # flags: STMT_END_F -master-bin.000001 351 Table_map 1 390 table_id: # (test.t1) -master-bin.000001 390 Write_rows 1 424 table_id: # flags: STMT_END_F -master-bin.000001 424 Query 1 500 use `test`; drop table t1 -set session autocommit = @ac; set @bcs = @@binlog_cache_size; -set @ac = @@autocommit; set global binlog_cache_size=4096; -set autocommit= 0; reset master; create table t1 (a int) engine=innodb; show binlog events from 0; From 8abc8b9dc7ce5cf7ef52b0dfa43deaf7e2e177f4 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 11 Jul 2007 18:38:45 +0400 Subject: [PATCH 2/2] Fix for bug #24192 "MySQL replication does not exit server when running out of memory" In case of out-of-memory error received from the master, print the corresponding message to the error log and stop slave I/O thread to avoid reconnecting with a wrong binary log position. sql/slave.cc: In case of out-of-memory error received from the master, print the corresponding message to the error log and stop slave I/O thread to avoid reconnecting with a wrong binary log position. --- sql/slave.cc | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/sql/slave.cc b/sql/slave.cc index 97615165803..32f500723d3 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -26,6 +26,7 @@ #include #include #include +#include #define MAX_SLAVE_RETRY_PAUSE 5 bool use_slave_mask = 0; @@ -3610,22 +3611,25 @@ after reconnect"); if (event_len == packet_error) { - uint mysql_error_number= mysql_errno(mysql); - if (mysql_error_number == CR_NET_PACKET_TOO_LARGE) - { - sql_print_error("\ + uint mysql_error_number= mysql_errno(mysql); + switch (mysql_error_number) { + case CR_NET_PACKET_TOO_LARGE: + sql_print_error("\ Log entry on master is longer than max_allowed_packet (%ld) on \ slave. If the entry is correct, restart the server with a higher value of \ max_allowed_packet", - thd->variables.max_allowed_packet); - goto err; - } - if (mysql_error_number == ER_MASTER_FATAL_ERROR_READING_BINLOG) - { - sql_print_error(ER(mysql_error_number), mysql_error_number, - mysql_error(mysql)); - goto err; - } + thd->variables.max_allowed_packet); + goto err; + case ER_MASTER_FATAL_ERROR_READING_BINLOG: + sql_print_error(ER(mysql_error_number), mysql_error_number, + mysql_error(mysql)); + goto err; + case EE_OUTOFMEMORY: + case ER_OUTOFMEMORY: + sql_print_error("\ +Stopping slave I/O thread due to out-of-memory error from master"); + goto err; + } mi->slave_running= MYSQL_SLAVE_RUN_NOT_CONNECT; thd->proc_info = "Waiting to reconnect after a failed master event read"; #ifdef SIGNAL_WITH_VIO_CLOSE