summaryrefslogtreecommitdiff
path: root/sql/slave.cc
diff options
context:
space:
mode:
authorunknown <kaa@polly.local>2007-07-11 18:38:45 +0400
committerunknown <kaa@polly.local>2007-07-11 18:38:45 +0400
commit8abc8b9dc7ce5cf7ef52b0dfa43deaf7e2e177f4 (patch)
tree062cf743576aa027f5ebdfef83d7f6197ae2dfc8 /sql/slave.cc
parentdc9b20a60301040cfc3801703f4799c5e60477a3 (diff)
downloadmariadb-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.cc30
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