diff options
author | unknown <kaa@polly.local> | 2007-07-11 18:38:45 +0400 |
---|---|---|
committer | unknown <kaa@polly.local> | 2007-07-11 18:38:45 +0400 |
commit | 8abc8b9dc7ce5cf7ef52b0dfa43deaf7e2e177f4 (patch) | |
tree | 062cf743576aa027f5ebdfef83d7f6197ae2dfc8 /sql/slave.cc | |
parent | dc9b20a60301040cfc3801703f4799c5e60477a3 (diff) | |
download | mariadb-git-8abc8b9dc7ce5cf7ef52b0dfa43deaf7e2e177f4.tar.gz |
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.
Diffstat (limited to 'sql/slave.cc')
-rw-r--r-- | sql/slave.cc | 30 |
1 files 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 <my_dir.h> #include <sql_common.h> #include <errmsg.h> +#include <mysys_err.h> #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 |