Bug #55675 | rpl.rpl_log_pos fails sporadically with error binlog truncated in the middle | ||
---|---|---|---|
Submitted: | 2 Aug 2010 7:31 | Modified: | 9 Feb 2011 20:58 |
Reporter: | Zhenxing He | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | Tests: Replication | Severity: | S3 (Non-critical) |
Version: | 5.1 | OS: | Any |
Assigned to: | Alfranio Junior | CPU Architecture: | Any |
Tags: | sporadic, test |
[2 Aug 2010 7:31]
Zhenxing He
[10 Sep 2010 10:38]
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/117994 3503 Alfranio Correia 2010-09-10 BUG#55675 rpl.rpl_log_pos fails sporadically with error binlog truncated in the middle Disabled the test case.
[27 Sep 2010 9:10]
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/119150 3504 Alfranio Correia 2010-09-27 BUG#55675 rpl.rpl_log_pos fails sporadically with error binlog truncated in the middle There are two calls to read_log_event() on master in mysql_binlog_send(), each will read 19 bytes, and the error of the second read_log_event() will be reported to slave. The second read_log_event() will start from position 94 (75 + 19) to 113 (75 + 19 + 19), the end position 113 is larger than the size 106 of binary log that only have a FD, but because there is a call to mtr.suppression: call mtr.add_suppression ("Slave I/O: Got fatal error 1236 from master when reading data from binary"); which will write some binary events to the file, and so normally the size of the binlog on master before slave connection will be large enough for the second read_log_event(). However, mysql_binlog_send() does not use the same IO_CACHE that is used to write into binary log (i.e. mysql_bin_log.log_file) for the hot binary log. It opens the binary log file directly by calling open_binlog() and create a separated IO_CACHE. So there is a possibily that after a master has flushed the binary log file, the content has been cached by the filesystem, and has not yet updated the on disk file yet. If this happens, then a slave will only see part of the file, and thus the second read_log_event() will report event truncated error.
[28 Sep 2010 8:50]
Bugs System
Pushed into mysql-5.1 5.1.52 (revid:sunanda.menon@sun.com-20100928083322-wangbv97uobu7g66) (version source revid:sunanda.menon@sun.com-20100928083322-wangbv97uobu7g66) (merge vers: 5.1.52) (pib:21)
[29 Sep 2010 8:37]
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/119353 3504 Alfranio Correia 2010-09-29 [merge] BUG#55675 rpl.rpl_log_pos fails sporadically with error binlog truncated in the middle There are two calls to read_log_event() on master in mysql_binlog_send(), each will read 19 bytes, and the error of the second read_log_event() will be reported to slave. The second read_log_event() will start from position 94 (75 + 19) to 113 (75 + 19 + 19), the end position 113 is larger than the size 106 of binary log that only have a FD, but because there is a call to mtr.suppression: call mtr.add_suppression ("Slave I/O: Got fatal error 1236 from master when reading data from binary"); which will write some binary events to the file, and so normally the size of the binlog on master before slave connection will be large enough for the second read_log_event(). However, mysql_binlog_send() does not use the same IO_CACHE that is used to write into binary log (i.e. mysql_bin_log.log_file) for the hot binary log. It opens the binary log file directly by calling open_binlog() and create a separated IO_CACHE. So there is a possibily that after a master has flushed the binary log file, the content has been cached by the filesystem, and has not yet updated the on disk file yet. If this happens, then a slave will only see part of the file, and thus the second read_log_event() will report event truncated error.
[1 Oct 2010 15:45]
Andrei Elkin
bug#54988 is a duplicate for this one.
[14 Oct 2010 8:39]
Bugs System
Pushed into mysql-5.1-telco-7.0 5.1.51-ndb-7.0.20 (revid:martin.skold@mysql.com-20101014082627-jrmy9xbfbtrebw3c) (version source revid:martin.skold@mysql.com-20101014082627-jrmy9xbfbtrebw3c) (merge vers: 5.1.51-ndb-7.0.20) (pib:21)
[14 Oct 2010 8:54]
Bugs System
Pushed into mysql-5.1-telco-6.3 5.1.51-ndb-6.3.39 (revid:martin.skold@mysql.com-20101014083757-5qo48b86d69zjvzj) (version source revid:martin.skold@mysql.com-20101014083757-5qo48b86d69zjvzj) (merge vers: 5.1.51-ndb-6.3.39) (pib:21)
[14 Oct 2010 9:12]
Bugs System
Pushed into mysql-5.1-telco-6.2 5.1.51-ndb-6.2.19 (revid:martin.skold@mysql.com-20101014084420-y54ecj85j5we27oa) (version source revid:martin.skold@mysql.com-20101014084420-y54ecj85j5we27oa) (merge vers: 5.1.51-ndb-6.2.19) (pib:21)
[9 Nov 2010 19:49]
Bugs System
Pushed into mysql-5.5 5.5.7-rc (revid:sunanda.menon@sun.com-20101109182959-otkxq8vo2dcd13la) (version source revid:marko.makela@oracle.com-20100824081003-v4ecy0tga99cpxw2) (merge vers: 5.1.50) (pib:21)
[13 Nov 2010 16:16]
Bugs System
Pushed into mysql-trunk 5.6.99-m5 (revid:alexander.nozdrin@oracle.com-20101113155825-czmva9kg4n31anmu) (version source revid:marko.makela@oracle.com-20100824081003-v4ecy0tga99cpxw2) (merge vers: 5.1.50) (pib:21)
[13 Nov 2010 16:42]
Bugs System
Pushed into mysql-next-mr (revid:alexander.nozdrin@oracle.com-20101113160336-atmtmfb3mzm4pz4i) (version source revid:marko.makela@oracle.com-20100824081003-v4ecy0tga99cpxw2) (pib:21)
[3 Jan 2011 15:59]
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/127802 3532 Alfranio Correia 2011-01-03 BUG#55675 rpl.rpl_log_pos fails sporadically with error binlog truncated in the middle There are two calls to read_log_event() on master in mysql_binlog_send(). Each call reads 19 bytes in this test case and the error of the second read_log_event() is reported to the slave. The second read_log_event() starts from position 94 (75 + 19) to 113 (75 + 19 + 19). Usually, there are two events in the binary log: . 0 - 3 - Header . 4 - 105 - Format Descriptor Event . 106 - 304 - Query Event and both reads fail because operations are reading from invalid positions as expected. However, mysql_binlog_send() does not use the same IO_CACHE that is used to write into binary log (i.e. mysql_bin_log.log_file) for the hot binary log. It opens the binary log file directly by calling open_binlog() and creates a separated IO_CACHE. So there is a possibly that after a master has flushed the binary log file, the content has been cached by the filesystem, and has not updated the disk file. If this happens, then a slave will only see part of the file, and thus the second read_log_event() will report event truncated error. To fix the problem, if the first read_log_event() has failed, we ensure that the second one will try to read from the same position.
[27 Jan 2011 18:39]
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/129804 3532 Alfranio Correia 2011-01-27 BUG#55675 rpl.rpl_log_pos fails sporadically with error binlog truncated in the middle There are two calls to read_log_event() on master in mysql_binlog_send(). Each call reads 19 bytes in this test case and the error of the second read_log_event() is reported to the slave. The second read_log_event() starts from position 94 (75 + 19) to 113 (75 + 19 + 19). Usually, there are two events in the binary log: . 0 - 3 - Header . 4 - 105 - Format Descriptor Event . 106 - 304 - Query Event and both reads fail because operations are reading from invalid positions as expected. However, mysql_binlog_send() does not use the same IO_CACHE that is used to write into binary log (i.e. mysql_bin_log.log_file) for the hot binary log. It opens the binary log file directly by calling open_binlog() and creates a separated IO_CACHE. So there is a possibly that after a master has flushed the binary log file, the content has been cached by the filesystem, and has not updated the disk file. If this happens, then a slave will only see part of the file, and thus the second read_log_event() will report event truncated error. To fix the problem, if the first read_log_event() has failed, we ensure that the second one will try to read from the same position.
[28 Jan 2011 1:26]
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/129824 3555 Alfranio Correia 2011-01-28 BUG#55675 rpl.rpl_log_pos fails sporadically with error binlog truncated in the middle There are two calls to read_log_event() on master in mysql_binlog_send(). Each call reads 19 bytes in this test case and the error of the second read_log_event() is reported to the slave. The second read_log_event() starts from position 94 (75 + 19) to 113 (75 + 19 + 19). Usually, there are two events in the binary log: . 0 - 3 - Header . 4 - 105 - Format Descriptor Event . 106 - 304 - Query Event and both reads fail because operations are reading from invalid positions as expected. However, mysql_binlog_send() does not use the same IO_CACHE that is used to write into binary log (i.e. mysql_bin_log.log_file) for the hot binary log. It opens the binary log file directly by calling open_binlog() and creates a separated IO_CACHE. So there is a possibly that after a master has flushed the binary log file, the content has been cached by the filesystem, and has not updated the disk file. If this happens, then a slave will only see part of the file, and thus the second read_log_event() will report event truncated error. To fix the problem, if the first read_log_event() has failed, we ensure that the second one will try to read from the same position.
[28 Jan 2011 9:00]
Andrei Elkin
Approved since the latest patch addresses discussed on irc an optimization issue.
[31 Jan 2011 14:39]
Bugs System
Pushed into mysql-5.1 5.1.56 (revid:alfranio.correia@oracle.com-20110131143133-tbrk92p7b691sy7v) (version source revid:alfranio.correia@oracle.com-20110131101101-q2o5o72io1tqvvv2) (merge vers: 5.1.56) (pib:24)
[31 Jan 2011 14:39]
Bugs System
Pushed into mysql-5.5 5.5.10 (revid:alfranio.correia@oracle.com-20110131143404-lhpp8lyvdm48z54o) (version source revid:alfranio.correia@oracle.com-20110131131105-7xbz1zb3m2atl0qr) (merge vers: 5.5.10) (pib:24)
[31 Jan 2011 14:41]
Bugs System
Pushed into mysql-trunk 5.6.2 (revid:alfranio.correia@oracle.com-20110131143645-adjsz57nh921np4f) (version source revid:alfranio.correia@oracle.com-20110131134438-ravmm40h965x7d5f) (merge vers: 5.6.2) (pib:24)
[31 Jan 2011 14:42]
Alfranio Junior
Pushed to 5.1, 5.5 and trunk.
[1 Feb 2011 16:10]
Jon Stephens
Changes do not appear to impact end users; closed without further action.
[9 Feb 2011 9:29]
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/130808 3622 Alfranio Correia 2011-02-09 Enabling test case rpl_row_event_max_size after fixing BUG#55675.
[9 Feb 2011 9:31]
Bugs System
Pushed into mysql-trunk 5.6.2 (revid:alfranio.correia@oracle.com-20110209092832-5cs1rbisq14r685c) (version source revid:alfranio.correia@oracle.com-20110209092832-5cs1rbisq14r685c) (merge vers: 5.6.2) (pib:24)
[9 Feb 2011 20:58]
Jon Stephens
Re-closed: see my previous comment.