diff options
author | unknown <aelkin/elkin@dsl-hkibras-fe30f900-107.dhcp.inet.fi> | 2006-11-12 20:01:58 +0200 |
---|---|---|
committer | unknown <aelkin/elkin@dsl-hkibras-fe30f900-107.dhcp.inet.fi> | 2006-11-12 20:01:58 +0200 |
commit | 57ba34ff8a9e372137d701bbe2c08fd948095326 (patch) | |
tree | 35eab99a9fe624b714c6a4cb65b747e8ea2c659c | |
parent | a403c2f925dd5da9a4928046588546d23d9dbb6d (diff) | |
download | mariadb-git-57ba34ff8a9e372137d701bbe2c08fd948095326.tar.gz |
bug#19402 SQL close to the size of the max_allowed_packet fails on the slave
comments are fixed as was suggested in reviews.
sql/log_event.h:
fixing comments
sql/slave.cc:
fixing comments
sql/sql_repl.cc:
fixing comments
-rw-r--r-- | sql/log_event.h | 6 | ||||
-rw-r--r-- | sql/slave.cc | 13 | ||||
-rw-r--r-- | sql/sql_repl.cc | 6 |
3 files changed, 20 insertions, 5 deletions
diff --git a/sql/log_event.h b/sql/log_event.h index 14ec6df3ee2..ec2d8993bca 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -147,8 +147,10 @@ struct sql_ex_info #define EXEC_LOAD_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 */ \ QUERY_HEADER_LEN + /* write_data */ \ NAME_LEN + 1) diff --git a/sql/slave.cc b/sql/slave.cc index bc80d586ced..6785e92b9f9 100644 --- a/sql/slave.cc +++ b/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; thd->host_or_ip= ""; 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 - + 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->master_access= ~(ulong)0; thd->priv_user = 0; @@ -3156,7 +3161,11 @@ slave_begin: mi->host, mi->port, IO_RPL_LOG_NAME, 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; } else diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index 5ac1d94b097..a20f2a6506c 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -420,7 +420,11 @@ impossible position"; goto err; } 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; while (!net->error && net->vio != 0 && !thd->killed) |