Bug #57893 rpl_row_ignorable_event fails when --binlog-checksum=CRC32
Submitted: 1 Nov 2010 12:21 Modified: 29 Nov 2010 11:46
Reporter: John Embretsen Email Updates:
Status: Closed Impact on me:
None 
Category:Tests: Replication Severity:S3 (Non-critical)
Version:5.6.99 (bzr_mysql-next-mr-wl2540) OS:Any
Assigned to: Andrei Elkin CPU Architecture:Any
Tags: pushbuild, wl2540

[1 Nov 2010 12:21] John Embretsen
Description:
This issue was found while testing WL#2540's implementation in mysql-next-mr-wl2540 branch as of 2010-10-28.

The test rpl_row_ignorable_event in the rpl test suite for MTR fails with result content mismatch. Binlog contents differ depending on whether checksuming is enabled or not, and the test is not set up to handle this difference.

Example diff:

-#server id #  end_log_pos # 	Start: binlog v#, server v #.##.## created # #:#:# at startup
+#server id #  end_log_pos # CRC32 0xa4559c94 	Start: binlog v#, server v #.##.## created # #:#:# at startup

How to repeat:
With the code branch mysql-next-mr-wl2540, do:

perl mysql-test-run.pl --mysqld=--binlog-checksum=CRC32 rpl.rpl_row_ignorable_event
[1 Nov 2010 13:51] John Embretsen
Attached full test failure diff from rpl_row_ignorable_event on linux x86.

Attachment: rpl_row_ignorable_event_diff.txt (text/plain), 25.88 KiB.

[2 Nov 2010 15:25] 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/122561

3190 Andrei Elkin	2010-11-02
      Bug #57893  rpl_row_ignorable_event fails when --binlog-checksum=CRC32
      
      There were two issues with the failure:
      
      1. The reported explicitly  CRC32 `val' in the header needs filtering out via
         --replace_regex
      
      2. More serious is that at verbose mode of event decoding the checksum trailing part
         of Rows-log-event:s was not cut off so the decoder decides there is more data.
      
      Fixed with deploying --replace_regex in the test and correcting the actual event size
      inside the verbose decoder of Log_event::print_base64().
      
      Side effects of this patch include:
      forcing PB2 to run rpl,binlog suites with checksum per push additionally to the default no-checksum.
      and fixes for binlog_checksum_basic.
     @ mysql-test/suite/rpl/t/rpl_row_ignorable_event.test
        replace_regex-ing  CRC32 `val' to empty in the header to comply with the no-checksum
        version results of the test.
     @ sql/log_event.cc
        correcting the actual event size of Rows-events in case of checksum is present.
[2 Nov 2010 15:28] 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/122562

3191 Andrei Elkin	2010-11-02
      Bug #57893  rpl_row_ignorable_event fails when --binlog-checksum=CRC32
      
      There were two issues with the failure:
      
      1. The reported explicitly  CRC32 `val' in the header needs filtering out via
         --replace_regex
      
      2. More serious is that at verbose mode of event decoding the checksum trailing part
         of Rows-log-event:s was not cut off so the decoder decides there is more data.
      
      Fixed with deploying --r--replace_regex in the test and correcting the actual event size
      inside the verbose decoder of Log_event::print_base64().
      
         
     @ sql/log_event.cc
        correcting the actual event size of Rows-events in case of checksum is present.
[8 Nov 2010 11:20] Andrei Elkin
Pushed to next-mr-wl2540.
[10 Nov 2010 14:46] Andrei Elkin
bug#57892 is a dup for this one.
[29 Nov 2010 11:11] Bugs System
Pushed into mysql-trunk 5.6.1-m5 (revid:alexander.nozdrin@oracle.com-20101129111021-874if2qsp0i8d5ze) (version source revid:alexander.nozdrin@oracle.com-20101129111021-874if2qsp0i8d5ze) (merge vers: 5.6.1-m5) (pib:23)
[29 Nov 2010 11:46] Jon Stephens
Issue doesn't appear in any release; closed without further action.