better error message in replication when packet is too large

parent c6ceb04b
...@@ -330,9 +330,15 @@ mc_net_safe_read(MYSQL *mysql) ...@@ -330,9 +330,15 @@ mc_net_safe_read(MYSQL *mysql)
if(errno != EINTR) if(errno != EINTR)
{ {
mc_end_server(mysql); mc_end_server(mysql);
if(net->last_errno != ER_NET_PACKET_TOO_LARGE)
{
net->last_errno=CR_SERVER_LOST; net->last_errno=CR_SERVER_LOST;
strmov(net->last_error,ER(net->last_errno)); strmov(net->last_error,ER(net->last_errno));
} }
else
strmov(net->last_error, "Packet too large - increase \
max_allowed_packet on this server");
}
return(packet_error); return(packet_error);
} }
if (net->read_pos[0] == 255) if (net->read_pos[0] == 255)
......
...@@ -1294,8 +1294,18 @@ try again, log '%s' at postion %s", RPL_LOG_NAME, ...@@ -1294,8 +1294,18 @@ try again, log '%s' at postion %s", RPL_LOG_NAME,
goto err; goto err;
} }
if (event_len == packet_error) if (event_len == packet_error)
{ {
if(mc_mysql_errno(mysql) == ER_NET_PACKET_TOO_LARGE)
{
sql_print_error("Log entry on master is longer than \
max_allowed_packet on slave. Slave thread will be aborted. If the entry is \
really supposed to be that long, restart the server with a higher value of \
max_allowed_packet. The current value is %ld", max_allowed_packet);
goto err;
}
thd->proc_info = "Waiting to reconnect after a failed read"; thd->proc_info = "Waiting to reconnect after a failed read";
if(mysql->net.vio) if(mysql->net.vio)
vio_close(mysql->net.vio); vio_close(mysql->net.vio);
......
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