mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
bug#19402 SQL close to the size of the max_allowed_packet fails on the slave
comments are fixed as was suggested in reviews.
This commit is contained in:

parent
fe5de9f5c3
commit
5a20c54201
@ -147,8 +147,10 @@ struct sql_ex_info
|
|||||||
#define EXEC_LOAD_HEADER_LEN 4
|
#define EXEC_LOAD_HEADER_LEN 4
|
||||||
#define DELETE_FILE_HEADER_LEN 4
|
#define DELETE_FILE_HEADER_LEN 4
|
||||||
|
|
||||||
/* amount of byte is contribution of replicaton protocol to a query
|
/*
|
||||||
received from user when the query goes to binlog */
|
Max number of possible extra bytes in a replication event compared to a
|
||||||
|
packet (i.e. a query) sent from client to master.
|
||||||
|
*/
|
||||||
#define MAX_LOG_EVENT_HEADER (LOG_EVENT_HEADER_LEN + /* write_header */ \
|
#define MAX_LOG_EVENT_HEADER (LOG_EVENT_HEADER_LEN + /* write_header */ \
|
||||||
QUERY_HEADER_LEN + /* write_data */ \
|
QUERY_HEADER_LEN + /* write_data */ \
|
||||||
NAME_LEN + 1)
|
NAME_LEN + 1)
|
||||||
|
13
sql/slave.cc
13
sql/slave.cc
@ -2618,8 +2618,13 @@ static int init_slave_thread(THD* thd, SLAVE_THD_TYPE thd_type)
|
|||||||
SYSTEM_THREAD_SLAVE_SQL : SYSTEM_THREAD_SLAVE_IO;
|
SYSTEM_THREAD_SLAVE_SQL : SYSTEM_THREAD_SLAVE_IO;
|
||||||
thd->host_or_ip= "";
|
thd->host_or_ip= "";
|
||||||
my_net_init(&thd->net, 0);
|
my_net_init(&thd->net, 0);
|
||||||
|
/*
|
||||||
|
Adding MAX_LOG_EVENT_HEADER_LEN to the max_allowed_packet on all
|
||||||
|
slave threads, since a replication event can become this much larger
|
||||||
|
than the corresponding packet (query) sent from client to master.
|
||||||
|
*/
|
||||||
thd->variables.max_allowed_packet= global_system_variables.max_allowed_packet
|
thd->variables.max_allowed_packet= global_system_variables.max_allowed_packet
|
||||||
+ MAX_LOG_EVENT_HEADER; /* reentering secured through using global */
|
+ MAX_LOG_EVENT_HEADER; /* note, incr over the global not session var */
|
||||||
thd->net.read_timeout = slave_net_timeout;
|
thd->net.read_timeout = slave_net_timeout;
|
||||||
thd->master_access= ~(ulong)0;
|
thd->master_access= ~(ulong)0;
|
||||||
thd->priv_user = 0;
|
thd->priv_user = 0;
|
||||||
@ -3156,7 +3161,11 @@ slave_begin:
|
|||||||
mi->host, mi->port,
|
mi->host, mi->port,
|
||||||
IO_RPL_LOG_NAME,
|
IO_RPL_LOG_NAME,
|
||||||
llstr(mi->master_log_pos,llbuff));
|
llstr(mi->master_log_pos,llbuff));
|
||||||
/* post-net-init for slave */
|
/*
|
||||||
|
Adding MAX_LOG_EVENT_HEADER_LEN to the max_packet_size on the I/O
|
||||||
|
thread, since a replication event can become this much larger than
|
||||||
|
the corresponding packet (query) sent from client to master.
|
||||||
|
*/
|
||||||
mysql->net.max_packet_size= thd->net.max_packet_size+= MAX_LOG_EVENT_HEADER;
|
mysql->net.max_packet_size= thd->net.max_packet_size+= MAX_LOG_EVENT_HEADER;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -420,7 +420,11 @@ impossible position";
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
packet->set("\0", 1, &my_charset_bin);
|
packet->set("\0", 1, &my_charset_bin);
|
||||||
/* dump thread the whole header size of query_log_event */
|
/*
|
||||||
|
Adding MAX_LOG_EVENT_HEADER_LEN, since a binlog event can become
|
||||||
|
this larger than the corresponding packet (query) sent
|
||||||
|
from client to master.
|
||||||
|
*/
|
||||||
thd->variables.max_allowed_packet+= MAX_LOG_EVENT_HEADER;
|
thd->variables.max_allowed_packet+= MAX_LOG_EVENT_HEADER;
|
||||||
|
|
||||||
while (!net->error && net->vio != 0 && !thd->killed)
|
while (!net->error && net->vio != 0 && !thd->killed)
|
||||||
|
Reference in New Issue
Block a user