Bug #30435 | loading large LOAD DATA INFILE breaks slave with read_buffer_size set on master | ||
---|---|---|---|
Submitted: | 15 Aug 2007 13:33 | Modified: | 12 Feb 2008 20:41 |
Reporter: | Morgan Tocker | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | 5.0.46 | OS: | Any |
Assigned to: | Andrei Elkin | CPU Architecture: | Any |
Tags: | bfsm_2007_10_18, regression |
[15 Aug 2007 13:33]
Morgan Tocker
[16 Aug 2007 11:12]
Axel Schwenke
I vote for *not* using read_buffer_size as chunk size for reading data file to LOAD DATA INFILE. This should be a separate variable or maybe automatically chosen dependent on if binlogging is enabled and what max_allowed_packet is set. On slave side this is even easier, as the binlog contains information how big the chunks are.
[16 Aug 2007 19:28]
Morgan Tocker
Sinisa asked me to check if this is a regression. It is in some sense, because with the earlier 4.1 behavior of LOAD DATA INFILE I believe this worked fine. However, I have also verified this in 5.0.18, so it's not a recent regression.
[19 Dec 2007 19:18]
Andrei Elkin
The current issue relates indeed to previous bugs that dealt with max_allowed_packet. It appeared that this bug's read_buffer_size variable actually has constraint not to be greater than the former bug#15937, bug#19402 max_allowed_packet.
[20 Dec 2007 18:06]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/40293 ChangeSet@1.2560, 2007-12-20 20:05:44+02:00, aelkin@koti.dsl.inet.fi +5 -0 BUG#30435 loading large LOAD DATA INFILE breaks slave with read_buffer_size set on master BUG#33413 show binlog events fails if binlog has event size of close to max_allowed_packet The size of Append_block replication event was determined solely by read_buffer_size whereas the rest of replication code deals with max_allowed_packet. When the former parameter was set to larger than the latter there were two artifacts: the master could not read events from binlog; show master events did not show. Fixed with - fragmenting the used io-cached buffer into pieces each size of less than max_allowed_packet (bug#30435) - incrementing show-binlog-events handling thread's max_allowed_packet with the max estimated for the replication header size
[20 Dec 2007 21:32]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/40307 ChangeSet@1.2560, 2007-12-20 23:31:27+02:00, aelkin@koti.dsl.inet.fi +7 -0 BUG#30435 loading large LOAD DATA INFILE breaks slave with read_buffer_size set on master BUG#33413 show binlog events fails if binlog has event size of close to max_allowed_packet The size of Append_block replication event was determined solely by read_buffer_size whereas the rest of replication code deals with max_allowed_packet. When the former parameter was set to larger than the latter there were two artifacts: the master could not read events from binlog; show master events did not show. Fixed with - fragmenting the used io-cached buffer into pieces each size of less than max_allowed_packet (bug#30435) - incrementing show-binlog-events handling thread's max_allowed_packet with the max estimated for the replication header size
[21 Dec 2007 11:41]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/40329 ChangeSet@1.2560, 2007-12-21 13:40:01+02:00, aelkin@koti.dsl.inet.fi +7 -0 BUG#30435 loading large LOAD DATA INFILE breaks slave with read_buffer_size set on master BUG#33413 show binlog events fails if binlog has event size of close to max_allowed_packet The size of Append_block replication event was determined solely by read_buffer_size whereas the rest of replication code deals with max_allowed_packet. When the former parameter was set to larger than the latter there were two artifacts: the master could not read events from binlog; show master events did not show. Fixed with - fragmenting the used io-cached buffer into pieces each size of less than max_allowed_packet (bug#30435) - incrementing show-binlog-events handling thread's max_allowed_packet with the max estimated for the replication header size
[21 Dec 2007 11:42]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/40330 ChangeSet@1.2560, 2007-12-21 13:42:02+02:00, aelkin@koti.dsl.inet.fi +6 -0 BUG#30435 loading large LOAD DATA INFILE breaks slave with read_buffer_size set on master BUG#33413 show binlog events fails if binlog has event size of close to max_allowed_packet The size of Append_block replication event was determined solely by read_buffer_size whereas the rest of replication code deals with max_allowed_packet. When the former parameter was set to larger than the latter there were two artifacts: the master could not read events from binlog; show master events did not show. Fixed with - fragmenting the used io-cached buffer into pieces each size of less than max_allowed_packet (bug#30435) - incrementing show-binlog-events handling thread's max_allowed_packet with the max estimated for the replication header size
[21 Dec 2007 20:35]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/40357 ChangeSet@1.2560, 2007-12-21 22:34:43+02:00, aelkin@koti.dsl.inet.fi +6 -0 BUG#30435 loading large LOAD DATA INFILE breaks slave with read_buffer_size set on master BUG#33413 show binlog events fails if binlog has event size of close to max_allowed_packet The size of Append_block replication event was determined solely by read_buffer_size whereas the rest of replication code deals with max_allowed_packet. When the former parameter was set to larger than the latter there were two artifacts: the master could not read events from binlog; show master events did not show. Fixed with - fragmenting the used io-cached buffer into pieces each size of less than max_allowed_packet (bug#30435) - incrementing show-binlog-events handling thread's max_allowed_packet with the max estimated for the replication header size
[22 Dec 2007 18:00]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/40376 ChangeSet@1.2563, 2007-12-22 19:59:47+02:00, aelkin@koti.dsl.inet.fi +2 -0 bug#30435 refining the test after it failed on pb.
[23 Dec 2007 9:19]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/40380 ChangeSet@1.2564, 2007-12-23 11:18:46+02:00, aelkin@koti.dsl.inet.fi +4 -0 bug#30435 changes due to non-determinism in value of read_buffer_size.
[5 Feb 2008 12:45]
Bugs System
Pushed into 5.0.56
[5 Feb 2008 13:04]
Bugs System
Pushed into 5.1.24-rc
[5 Feb 2008 13:08]
Bugs System
Pushed into 6.0.5-alpha
[12 Feb 2008 20:41]
Paul DuBois
Noted in 5.0.56, 5.1.24, 6.0.5 changelogs. Replication of LOAD DATA INFILE could fail when read_buffer_size was larger than max_allowed_packet.
[6 Mar 2008 9:05]
Jon Stephens
Also documented for 5.1.23-ndb-6.2.14.
[30 Mar 2008 18:58]
Jon Stephens
Also documented for 5.1.23-ndb-6.3.11.