Commit 8abc8b9d authored by unknown's avatar unknown

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.
parent dc9b20a6
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <my_dir.h> #include <my_dir.h>
#include <sql_common.h> #include <sql_common.h>
#include <errmsg.h> #include <errmsg.h>
#include <mysys_err.h>
#define MAX_SLAVE_RETRY_PAUSE 5 #define MAX_SLAVE_RETRY_PAUSE 5
bool use_slave_mask = 0; bool use_slave_mask = 0;
...@@ -3611,20 +3612,23 @@ after reconnect"); ...@@ -3611,20 +3612,23 @@ after reconnect");
if (event_len == packet_error) if (event_len == packet_error)
{ {
uint mysql_error_number= mysql_errno(mysql); uint mysql_error_number= mysql_errno(mysql);
if (mysql_error_number == CR_NET_PACKET_TOO_LARGE) switch (mysql_error_number) {
{ case CR_NET_PACKET_TOO_LARGE:
sql_print_error("\ sql_print_error("\
Log entry on master is longer than max_allowed_packet (%ld) on \ 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 \ slave. If the entry is correct, restart the server with a higher value of \
max_allowed_packet", max_allowed_packet",
thd->variables.max_allowed_packet); thd->variables.max_allowed_packet);
goto err; goto err;
} case ER_MASTER_FATAL_ERROR_READING_BINLOG:
if (mysql_error_number == ER_MASTER_FATAL_ERROR_READING_BINLOG)
{
sql_print_error(ER(mysql_error_number), mysql_error_number, sql_print_error(ER(mysql_error_number), mysql_error_number,
mysql_error(mysql)); mysql_error(mysql));
goto err; 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; mi->slave_running= MYSQL_SLAVE_RUN_NOT_CONNECT;
thd->proc_info = "Waiting to reconnect after a failed master event read"; thd->proc_info = "Waiting to reconnect after a failed master event read";
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment