Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-25588

Atomic DDL: Binlog query event written upon recovery is corrupt

Details

    Description

      As a part of atomic DDL testing, the server was intentionally crashed (SIGKILL-ed) while executing concurrent DDL. One of the threads was running

      DROP TABLE IF EXISTS transforms.insert_select_18282
      

      on an existing InnoDB table.
      After the crash .frm and .ibd files still existed.
      Upon recovery the table was dropped, no error messages produced.
      A binlog event for the drop was written.
      However, the event is corrupt: each character in the DROP statement is followed by \0:

      bb-10.6-monty 9cd2bc6b4

      # at 384
      #700101  2:00:00 server id 1  end_log_pos 614 CRC32 0xac0af65a  Query   thread_id=0     exec_time=1620081899    error_code=0
      use `test`/*!*/;
      SET TIMESTAMP=0/*!*/;
      SET @@session.pseudo_thread_id=0/*!*/;
      SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0/*!*/;
      SET @@session.sql_mode=1411383296/*!*/;
      SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
      /*!\C latin1 *//*!*/;
      SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=640/*!*/;
      SET @@session.lc_time_names=0/*!*/;
      SET @@session.collation_database=DEFAULT/*!*/;
      ^@D^@R^@O^@P^@ ^@T^@A^@B^@L^@E^@ ^@I^@F^@ ^@E^@X^@I^@S^@T^@S^@ ^@`^@t^@r^@a^@n^@s^@f^@o^@r^@m^@s^@`.^@`^@i^@n^@s^@e^@r^@t^@_^@s^@e^@l^@e^@c^@t^@_^@1^@8^@2^@8^@2^@`^@ ^@/^@*^@ ^@g^@e^@n^@e^@r^@a^@t^@e^@d^@ 
      ^@b^@y^@ ^@d^@d^@l^@ ^@l^@o^@g^@ ^@*^@/
      /*!*/;
      DELIMITER ;
      # End of log file
      

      000000b0  44 45 46 41 55 4c 54 2f  2a 21 2a 2f 3b 0a 00 44  |DEFAULT/*!*/;..D|
      000000c0  00 52 00 4f 00 50 00 20  00 54 00 41 00 42 00 4c  |.R.O.P. .T.A.B.L|
      000000d0  00 45 00 20 00 49 00 46  00 20 00 45 00 58 00 49  |.E. .I.F. .E.X.I|
      000000e0  00 53 00 54 00 53 00 20  00 60 00 74 00 72 00 61  |.S.T.S. .`.t.r.a|
      000000f0  00 6e 00 73 00 66 00 6f  00 72 00 6d 00 73 00 60  |.n.s.f.o.r.m.s.`|
      00000100  2e 00 60 00 69 00 6e 00  73 00 65 00 72 00 74 00  |..`.i.n.s.e.r.t.|
      00000110  5f 00 73 00 65 00 6c 00  65 00 63 00 74 00 5f 00  |_.s.e.l.e.c.t._.|
      00000120  31 00 38 00 32 00 38 00  32 00 60 00 20 00 2f 00  |1.8.2.8.2.`. ./.|
      00000130  2a 00 20 00 67 00 65 00  6e 00 65 00 72 00 61 00  |*. .g.e.n.e.r.a.|
      00000140  74 00 65 00 64 00 20 00  62 00 79 00 20 00 64 00  |t.e.d. .b.y. .d.|
      00000150  64 00 6c 00 20 00 6c 00  6f 00 67 00 20 00 2a 00  |d.l. .l.o.g. .*.|
      00000160  2f 0a 2f 2a 21 2a 2f 3b  0a 44 45 4c 49 4d 49 54  |/./*!*/;.DELIMIT|
      

      When the binlog is replayed, no errors are issued upon the corrupt DROP (surprisingly), it just gets ignored.

      Please also note TIMESTAMP=0. I don't yet know if it can have any negative effect, but it doesn't look healthy.

      The server was running with the following options (just in case any of them are important):

      --plugin-load-add=ha_blackhole \
      --innodb-purge-threads=32 \
      --innodb-checksum-algorithm=full_crc32 \
      --innodb-compression-algorithm=none \
      --innodb-log-file-size=256M \
      --innodb-write-io-threads=2 \
      --innodb-flush-method=fsync \
      --innodb-sort-buffer-size=64K \
      --log_output=FILE \
      --max-statement-time=30 \
      --lock-wait-timeout=10 \
      --innodb-lock-wait-timeout=5 \
      --performance-schema=on \
      --performance-schema-instrument=%=ON \
      --performance-schema-consumer-events-stages-current=ON \
      --performance-schema-consumer-events-stages-history=ON \
      --performance-schema-consumer-events-stages-history-long=ON \
      --performance-schema-consumer-events-statements-current=ON \
      --performance-schema-consumer-events-statements-history=ON \
      --performance-schema-consumer-events-statements-history-long=ON \
      --performance-schema-consumer-events-waits-current=ON \
      --performance-schema-consumer-events-waits-history=ON \
      --performance-schema-consumer-events-waits-history-long=ON \
      --performance-schema-consumer-global-instrumentation=ON \
      --performance-schema-consumer-thread-instrumentation=ON \
      --performance-schema-consumer-statements-digest=ON \
      --performance-schema-consumer-events-transactions-current=ON \
      --performance-schema-consumer-events-transactions-history=ON \
      --performance-schema-consumer-events-transactions-history-long=ON \
      --binlog-format=mixed \
      --log-bin \
      --log_bin_trust_function_creators=1 \
      --character-set-server=ucs2 \
      --collation-server=ucs2_croatian_ci \
      --log-tc-size=1M \
      --thread-handling=pool-of-threads \
      --explicit-defaults-for-timestamp=on \
      --max-digest-length=0 \
      --skip-external-locking=OFF
      

      Attachments

        Issue Links

          Activity

            elenst Elena Stepanova created issue -
            elenst Elena Stepanova made changes -
            Field Original Value New Value
            elenst Elena Stepanova made changes -
            elenst Elena Stepanova made changes -
            Description As a part of atomic DDL testing, the server was intentionally crashed (SIGKILL-ed) while executing concurrent DDL. One of the threads was running
            {code:sql}
            DROP TABLE IF EXISTS transforms.insert_select_18282
            {code}
            on an existing InnoDB table.
            After the crash .frm and .ibd files still existed.
            Upon recovery the table was dropped, no error messages produced.
            A binlog event for the drop was written.
            However, the event is corrupt: each character in the {{DROP}} statement is followed by {{\0}}:
            {noformat:title=bb-10.6-monty 9cd2bc6b4}
            # at 384
            #700101 2:00:00 server id 1 end_log_pos 614 CRC32 0xac0af65a Query thread_id=0 exec_time=1620081899 error_code=0
            use `test`/*!*/;
            SET TIMESTAMP=0/*!*/;
            SET @@session.pseudo_thread_id=0/*!*/;
            SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0/*!*/;
            SET @@session.sql_mode=1411383296/*!*/;
            SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
            /*!\C latin1 *//*!*/;
            SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=640/*!*/;
            SET @@session.lc_time_names=0/*!*/;
            SET @@session.collation_database=DEFAULT/*!*/;
            ^@D^@R^@O^@P^@ ^@T^@A^@B^@L^@E^@ ^@I^@F^@ ^@E^@X^@I^@S^@T^@S^@ ^@`^@t^@r^@a^@n^@s^@f^@o^@r^@m^@s^@`.^@`^@i^@n^@s^@e^@r^@t^@_^@s^@e^@l^@e^@c^@t^@_^@1^@8^@2^@8^@2^@`^@ ^@/^@*^@ ^@g^@e^@n^@e^@r^@a^@t^@e^@d^@
            ^@b^@y^@ ^@d^@d^@l^@ ^@l^@o^@g^@ ^@*^@/
            /*!*/;
            DELIMITER ;
            # End of log file
            {noformat}
            {noformat}
            000000b0 44 45 46 41 55 4c 54 2f 2a 21 2a 2f 3b 0a 00 44 |DEFAULT/*!*/;..D|
            000000c0 00 52 00 4f 00 50 00 20 00 54 00 41 00 42 00 4c |.R.O.P. .T.A.B.L|
            000000d0 00 45 00 20 00 49 00 46 00 20 00 45 00 58 00 49 |.E. .I.F. .E.X.I|
            000000e0 00 53 00 54 00 53 00 20 00 60 00 74 00 72 00 61 |.S.T.S. .`.t.r.a|
            000000f0 00 6e 00 73 00 66 00 6f 00 72 00 6d 00 73 00 60 |.n.s.f.o.r.m.s.`|
            00000100 2e 00 60 00 69 00 6e 00 73 00 65 00 72 00 74 00 |..`.i.n.s.e.r.t.|
            00000110 5f 00 73 00 65 00 6c 00 65 00 63 00 74 00 5f 00 |_.s.e.l.e.c.t._.|
            00000120 31 00 38 00 32 00 38 00 32 00 60 00 20 00 2f 00 |1.8.2.8.2.`. ./.|
            00000130 2a 00 20 00 67 00 65 00 6e 00 65 00 72 00 61 00 |*. .g.e.n.e.r.a.|
            00000140 74 00 65 00 64 00 20 00 62 00 79 00 20 00 64 00 |t.e.d. .b.y. .d.|
            00000150 64 00 6c 00 20 00 6c 00 6f 00 67 00 20 00 2a 00 |d.l. .l.o.g. .*.|
            00000160 2f 0a 2f 2a 21 2a 2f 3b 0a 44 45 4c 49 4d 49 54 |/./*!*/;.DELIMIT|
            {noformat}

            When the binlog is replayed, no errors are issued upon the corrupt {{DROP}} (surprisingly), it just gets ignored.
            As a part of atomic DDL testing, the server was intentionally crashed (SIGKILL-ed) while executing concurrent DDL. One of the threads was running
            {code:sql}
            DROP TABLE IF EXISTS transforms.insert_select_18282
            {code}
            on an existing InnoDB table.
            After the crash .frm and .ibd files still existed.
            Upon recovery the table was dropped, no error messages produced.
            A binlog event for the drop was written.
            However, the event is corrupt: each character in the {{DROP}} statement is followed by {{\0}}:
            {noformat:title=bb-10.6-monty 9cd2bc6b4}
            # at 384
            #700101 2:00:00 server id 1 end_log_pos 614 CRC32 0xac0af65a Query thread_id=0 exec_time=1620081899 error_code=0
            use `test`/*!*/;
            SET TIMESTAMP=0/*!*/;
            SET @@session.pseudo_thread_id=0/*!*/;
            SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0/*!*/;
            SET @@session.sql_mode=1411383296/*!*/;
            SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
            /*!\C latin1 *//*!*/;
            SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=640/*!*/;
            SET @@session.lc_time_names=0/*!*/;
            SET @@session.collation_database=DEFAULT/*!*/;
            ^@D^@R^@O^@P^@ ^@T^@A^@B^@L^@E^@ ^@I^@F^@ ^@E^@X^@I^@S^@T^@S^@ ^@`^@t^@r^@a^@n^@s^@f^@o^@r^@m^@s^@`.^@`^@i^@n^@s^@e^@r^@t^@_^@s^@e^@l^@e^@c^@t^@_^@1^@8^@2^@8^@2^@`^@ ^@/^@*^@ ^@g^@e^@n^@e^@r^@a^@t^@e^@d^@
            ^@b^@y^@ ^@d^@d^@l^@ ^@l^@o^@g^@ ^@*^@/
            /*!*/;
            DELIMITER ;
            # End of log file
            {noformat}
            {noformat}
            000000b0 44 45 46 41 55 4c 54 2f 2a 21 2a 2f 3b 0a 00 44 |DEFAULT/*!*/;..D|
            000000c0 00 52 00 4f 00 50 00 20 00 54 00 41 00 42 00 4c |.R.O.P. .T.A.B.L|
            000000d0 00 45 00 20 00 49 00 46 00 20 00 45 00 58 00 49 |.E. .I.F. .E.X.I|
            000000e0 00 53 00 54 00 53 00 20 00 60 00 74 00 72 00 61 |.S.T.S. .`.t.r.a|
            000000f0 00 6e 00 73 00 66 00 6f 00 72 00 6d 00 73 00 60 |.n.s.f.o.r.m.s.`|
            00000100 2e 00 60 00 69 00 6e 00 73 00 65 00 72 00 74 00 |..`.i.n.s.e.r.t.|
            00000110 5f 00 73 00 65 00 6c 00 65 00 63 00 74 00 5f 00 |_.s.e.l.e.c.t._.|
            00000120 31 00 38 00 32 00 38 00 32 00 60 00 20 00 2f 00 |1.8.2.8.2.`. ./.|
            00000130 2a 00 20 00 67 00 65 00 6e 00 65 00 72 00 61 00 |*. .g.e.n.e.r.a.|
            00000140 74 00 65 00 64 00 20 00 62 00 79 00 20 00 64 00 |t.e.d. .b.y. .d.|
            00000150 64 00 6c 00 20 00 6c 00 6f 00 67 00 20 00 2a 00 |d.l. .l.o.g. .*.|
            00000160 2f 0a 2f 2a 21 2a 2f 3b 0a 44 45 4c 49 4d 49 54 |/./*!*/;.DELIMIT|
            {noformat}

            When the binlog is replayed, no errors are issued upon the corrupt {{DROP}} (surprisingly), it just gets ignored.

            The server was running with the following options (I'm not sure if any of them are important):
            {noformat}
            --plugin-load-add=ha_blackhole --innodb-purge-threads=32 --innodb-checksum-algorithm=full_crc32 --innodb-compression-algorithm=none --innodb-log-file-size=256M --innodb-write-io-threads=2 --innodb-flush-method=fsync --innodb-sort-buffer-size=64K --log_output=FILE --max-statement-time=30 --lock-wait-timeout=10 --innodb-lock-wait-timeout=5 --performance-schema=on --performance-schema-instrument=%=ON --performance-schema-consumer-events-stages-current=ON --performance-schema-consumer-events-stages-history=ON --performance-schema-consumer-events-stages-history-long=ON --performance-schema-consumer-events-statements-current=ON --performance-schema-consumer-events-statements-history=ON --performance-schema-consumer-events-statements-history-long=ON --performance-schema-consumer-events-waits-current=ON --performance-schema-consumer-events-waits-history=ON --performance-schema-consumer-events-waits-history-long=ON --performance-schema-consumer-global-instrumentation=ON --performance-schema-consumer-thread-instrumentation=ON --performance-schema-consumer-statements-digest=ON --performance-schema-consumer-events-transactions-current=ON --performance-schema-consumer-events-transactions-history=ON --performance-schema-consumer-events-transactions-history-long=ON --binlog-format=mixed --log-bin --log_bin_trust_function_creators=1 --character-set-server=ucs2 --collation-server=ucs2_croatian_ci --log-tc-size=1M --thread-handling=pool-of-threads --explicit-defaults-for-timestamp=on --max-digest-length=0 --skip-external-locking=OFF
            {noformat}
            elenst Elena Stepanova made changes -
            Description As a part of atomic DDL testing, the server was intentionally crashed (SIGKILL-ed) while executing concurrent DDL. One of the threads was running
            {code:sql}
            DROP TABLE IF EXISTS transforms.insert_select_18282
            {code}
            on an existing InnoDB table.
            After the crash .frm and .ibd files still existed.
            Upon recovery the table was dropped, no error messages produced.
            A binlog event for the drop was written.
            However, the event is corrupt: each character in the {{DROP}} statement is followed by {{\0}}:
            {noformat:title=bb-10.6-monty 9cd2bc6b4}
            # at 384
            #700101 2:00:00 server id 1 end_log_pos 614 CRC32 0xac0af65a Query thread_id=0 exec_time=1620081899 error_code=0
            use `test`/*!*/;
            SET TIMESTAMP=0/*!*/;
            SET @@session.pseudo_thread_id=0/*!*/;
            SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0/*!*/;
            SET @@session.sql_mode=1411383296/*!*/;
            SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
            /*!\C latin1 *//*!*/;
            SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=640/*!*/;
            SET @@session.lc_time_names=0/*!*/;
            SET @@session.collation_database=DEFAULT/*!*/;
            ^@D^@R^@O^@P^@ ^@T^@A^@B^@L^@E^@ ^@I^@F^@ ^@E^@X^@I^@S^@T^@S^@ ^@`^@t^@r^@a^@n^@s^@f^@o^@r^@m^@s^@`.^@`^@i^@n^@s^@e^@r^@t^@_^@s^@e^@l^@e^@c^@t^@_^@1^@8^@2^@8^@2^@`^@ ^@/^@*^@ ^@g^@e^@n^@e^@r^@a^@t^@e^@d^@
            ^@b^@y^@ ^@d^@d^@l^@ ^@l^@o^@g^@ ^@*^@/
            /*!*/;
            DELIMITER ;
            # End of log file
            {noformat}
            {noformat}
            000000b0 44 45 46 41 55 4c 54 2f 2a 21 2a 2f 3b 0a 00 44 |DEFAULT/*!*/;..D|
            000000c0 00 52 00 4f 00 50 00 20 00 54 00 41 00 42 00 4c |.R.O.P. .T.A.B.L|
            000000d0 00 45 00 20 00 49 00 46 00 20 00 45 00 58 00 49 |.E. .I.F. .E.X.I|
            000000e0 00 53 00 54 00 53 00 20 00 60 00 74 00 72 00 61 |.S.T.S. .`.t.r.a|
            000000f0 00 6e 00 73 00 66 00 6f 00 72 00 6d 00 73 00 60 |.n.s.f.o.r.m.s.`|
            00000100 2e 00 60 00 69 00 6e 00 73 00 65 00 72 00 74 00 |..`.i.n.s.e.r.t.|
            00000110 5f 00 73 00 65 00 6c 00 65 00 63 00 74 00 5f 00 |_.s.e.l.e.c.t._.|
            00000120 31 00 38 00 32 00 38 00 32 00 60 00 20 00 2f 00 |1.8.2.8.2.`. ./.|
            00000130 2a 00 20 00 67 00 65 00 6e 00 65 00 72 00 61 00 |*. .g.e.n.e.r.a.|
            00000140 74 00 65 00 64 00 20 00 62 00 79 00 20 00 64 00 |t.e.d. .b.y. .d.|
            00000150 64 00 6c 00 20 00 6c 00 6f 00 67 00 20 00 2a 00 |d.l. .l.o.g. .*.|
            00000160 2f 0a 2f 2a 21 2a 2f 3b 0a 44 45 4c 49 4d 49 54 |/./*!*/;.DELIMIT|
            {noformat}

            When the binlog is replayed, no errors are issued upon the corrupt {{DROP}} (surprisingly), it just gets ignored.

            The server was running with the following options (I'm not sure if any of them are important):
            {noformat}
            --plugin-load-add=ha_blackhole --innodb-purge-threads=32 --innodb-checksum-algorithm=full_crc32 --innodb-compression-algorithm=none --innodb-log-file-size=256M --innodb-write-io-threads=2 --innodb-flush-method=fsync --innodb-sort-buffer-size=64K --log_output=FILE --max-statement-time=30 --lock-wait-timeout=10 --innodb-lock-wait-timeout=5 --performance-schema=on --performance-schema-instrument=%=ON --performance-schema-consumer-events-stages-current=ON --performance-schema-consumer-events-stages-history=ON --performance-schema-consumer-events-stages-history-long=ON --performance-schema-consumer-events-statements-current=ON --performance-schema-consumer-events-statements-history=ON --performance-schema-consumer-events-statements-history-long=ON --performance-schema-consumer-events-waits-current=ON --performance-schema-consumer-events-waits-history=ON --performance-schema-consumer-events-waits-history-long=ON --performance-schema-consumer-global-instrumentation=ON --performance-schema-consumer-thread-instrumentation=ON --performance-schema-consumer-statements-digest=ON --performance-schema-consumer-events-transactions-current=ON --performance-schema-consumer-events-transactions-history=ON --performance-schema-consumer-events-transactions-history-long=ON --binlog-format=mixed --log-bin --log_bin_trust_function_creators=1 --character-set-server=ucs2 --collation-server=ucs2_croatian_ci --log-tc-size=1M --thread-handling=pool-of-threads --explicit-defaults-for-timestamp=on --max-digest-length=0 --skip-external-locking=OFF
            {noformat}
            As a part of atomic DDL testing, the server was intentionally crashed (SIGKILL-ed) while executing concurrent DDL. One of the threads was running
            {code:sql}
            DROP TABLE IF EXISTS transforms.insert_select_18282
            {code}
            on an existing InnoDB table.
            After the crash .frm and .ibd files still existed.
            Upon recovery the table was dropped, no error messages produced.
            A binlog event for the drop was written.
            However, the event is corrupt: each character in the {{DROP}} statement is followed by {{\0}}:
            {noformat:title=bb-10.6-monty 9cd2bc6b4}
            # at 384
            #700101 2:00:00 server id 1 end_log_pos 614 CRC32 0xac0af65a Query thread_id=0 exec_time=1620081899 error_code=0
            use `test`/*!*/;
            SET TIMESTAMP=0/*!*/;
            SET @@session.pseudo_thread_id=0/*!*/;
            SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0/*!*/;
            SET @@session.sql_mode=1411383296/*!*/;
            SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
            /*!\C latin1 *//*!*/;
            SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=640/*!*/;
            SET @@session.lc_time_names=0/*!*/;
            SET @@session.collation_database=DEFAULT/*!*/;
            ^@D^@R^@O^@P^@ ^@T^@A^@B^@L^@E^@ ^@I^@F^@ ^@E^@X^@I^@S^@T^@S^@ ^@`^@t^@r^@a^@n^@s^@f^@o^@r^@m^@s^@`.^@`^@i^@n^@s^@e^@r^@t^@_^@s^@e^@l^@e^@c^@t^@_^@1^@8^@2^@8^@2^@`^@ ^@/^@*^@ ^@g^@e^@n^@e^@r^@a^@t^@e^@d^@
            ^@b^@y^@ ^@d^@d^@l^@ ^@l^@o^@g^@ ^@*^@/
            /*!*/;
            DELIMITER ;
            # End of log file
            {noformat}
            {noformat}
            000000b0 44 45 46 41 55 4c 54 2f 2a 21 2a 2f 3b 0a 00 44 |DEFAULT/*!*/;..D|
            000000c0 00 52 00 4f 00 50 00 20 00 54 00 41 00 42 00 4c |.R.O.P. .T.A.B.L|
            000000d0 00 45 00 20 00 49 00 46 00 20 00 45 00 58 00 49 |.E. .I.F. .E.X.I|
            000000e0 00 53 00 54 00 53 00 20 00 60 00 74 00 72 00 61 |.S.T.S. .`.t.r.a|
            000000f0 00 6e 00 73 00 66 00 6f 00 72 00 6d 00 73 00 60 |.n.s.f.o.r.m.s.`|
            00000100 2e 00 60 00 69 00 6e 00 73 00 65 00 72 00 74 00 |..`.i.n.s.e.r.t.|
            00000110 5f 00 73 00 65 00 6c 00 65 00 63 00 74 00 5f 00 |_.s.e.l.e.c.t._.|
            00000120 31 00 38 00 32 00 38 00 32 00 60 00 20 00 2f 00 |1.8.2.8.2.`. ./.|
            00000130 2a 00 20 00 67 00 65 00 6e 00 65 00 72 00 61 00 |*. .g.e.n.e.r.a.|
            00000140 74 00 65 00 64 00 20 00 62 00 79 00 20 00 64 00 |t.e.d. .b.y. .d.|
            00000150 64 00 6c 00 20 00 6c 00 6f 00 67 00 20 00 2a 00 |d.l. .l.o.g. .*.|
            00000160 2f 0a 2f 2a 21 2a 2f 3b 0a 44 45 4c 49 4d 49 54 |/./*!*/;.DELIMIT|
            {noformat}

            When the binlog is replayed, no errors are issued upon the corrupt {{DROP}} (surprisingly), it just gets ignored.

            The server was running with the following options (I'm not sure if any of them are important):
            {noformat}
            --plugin-load-add=ha_blackhole \
            --innodb-purge-threads=32 \
            --innodb-checksum-algorithm=full_crc32 \
            --innodb-compression-algorithm=none \
            --innodb-log-file-size=256M \
            --innodb-write-io-threads=2 \
            --innodb-flush-method=fsync \
            --innodb-sort-buffer-size=64K \
            --log_output=FILE \
            --max-statement-time=30 \
            --lock-wait-timeout=10 \
            --innodb-lock-wait-timeout=5 \
            --performance-schema=on \
            --performance-schema-instrument=%=ON \
            --performance-schema-consumer-events-stages-current=ON \
            --performance-schema-consumer-events-stages-history=ON \
            --performance-schema-consumer-events-stages-history-long=ON \
            --performance-schema-consumer-events-statements-current=ON \
            --performance-schema-consumer-events-statements-history=ON \
            --performance-schema-consumer-events-statements-history-long=ON \
            --performance-schema-consumer-events-waits-current=ON \
            --performance-schema-consumer-events-waits-history=ON \
            --performance-schema-consumer-events-waits-history-long=ON \
            --performance-schema-consumer-global-instrumentation=ON \
            --performance-schema-consumer-thread-instrumentation=ON \
            --performance-schema-consumer-statements-digest=ON \
            --performance-schema-consumer-events-transactions-current=ON \
            --performance-schema-consumer-events-transactions-history=ON \
            --performance-schema-consumer-events-transactions-history-long=ON \
            --binlog-format=mixed \
            --log-bin \
            --log_bin_trust_function_creators=1 \
            --character-set-server=ucs2 \
            --collation-server=ucs2_croatian_ci \
            --log-tc-size=1M \
            --thread-handling=pool-of-threads \
            --explicit-defaults-for-timestamp=on \
            --max-digest-length=0 \
            --skip-external-locking=OFF
            {noformat}
            elenst Elena Stepanova made changes -
            Description As a part of atomic DDL testing, the server was intentionally crashed (SIGKILL-ed) while executing concurrent DDL. One of the threads was running
            {code:sql}
            DROP TABLE IF EXISTS transforms.insert_select_18282
            {code}
            on an existing InnoDB table.
            After the crash .frm and .ibd files still existed.
            Upon recovery the table was dropped, no error messages produced.
            A binlog event for the drop was written.
            However, the event is corrupt: each character in the {{DROP}} statement is followed by {{\0}}:
            {noformat:title=bb-10.6-monty 9cd2bc6b4}
            # at 384
            #700101 2:00:00 server id 1 end_log_pos 614 CRC32 0xac0af65a Query thread_id=0 exec_time=1620081899 error_code=0
            use `test`/*!*/;
            SET TIMESTAMP=0/*!*/;
            SET @@session.pseudo_thread_id=0/*!*/;
            SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0/*!*/;
            SET @@session.sql_mode=1411383296/*!*/;
            SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
            /*!\C latin1 *//*!*/;
            SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=640/*!*/;
            SET @@session.lc_time_names=0/*!*/;
            SET @@session.collation_database=DEFAULT/*!*/;
            ^@D^@R^@O^@P^@ ^@T^@A^@B^@L^@E^@ ^@I^@F^@ ^@E^@X^@I^@S^@T^@S^@ ^@`^@t^@r^@a^@n^@s^@f^@o^@r^@m^@s^@`.^@`^@i^@n^@s^@e^@r^@t^@_^@s^@e^@l^@e^@c^@t^@_^@1^@8^@2^@8^@2^@`^@ ^@/^@*^@ ^@g^@e^@n^@e^@r^@a^@t^@e^@d^@
            ^@b^@y^@ ^@d^@d^@l^@ ^@l^@o^@g^@ ^@*^@/
            /*!*/;
            DELIMITER ;
            # End of log file
            {noformat}
            {noformat}
            000000b0 44 45 46 41 55 4c 54 2f 2a 21 2a 2f 3b 0a 00 44 |DEFAULT/*!*/;..D|
            000000c0 00 52 00 4f 00 50 00 20 00 54 00 41 00 42 00 4c |.R.O.P. .T.A.B.L|
            000000d0 00 45 00 20 00 49 00 46 00 20 00 45 00 58 00 49 |.E. .I.F. .E.X.I|
            000000e0 00 53 00 54 00 53 00 20 00 60 00 74 00 72 00 61 |.S.T.S. .`.t.r.a|
            000000f0 00 6e 00 73 00 66 00 6f 00 72 00 6d 00 73 00 60 |.n.s.f.o.r.m.s.`|
            00000100 2e 00 60 00 69 00 6e 00 73 00 65 00 72 00 74 00 |..`.i.n.s.e.r.t.|
            00000110 5f 00 73 00 65 00 6c 00 65 00 63 00 74 00 5f 00 |_.s.e.l.e.c.t._.|
            00000120 31 00 38 00 32 00 38 00 32 00 60 00 20 00 2f 00 |1.8.2.8.2.`. ./.|
            00000130 2a 00 20 00 67 00 65 00 6e 00 65 00 72 00 61 00 |*. .g.e.n.e.r.a.|
            00000140 74 00 65 00 64 00 20 00 62 00 79 00 20 00 64 00 |t.e.d. .b.y. .d.|
            00000150 64 00 6c 00 20 00 6c 00 6f 00 67 00 20 00 2a 00 |d.l. .l.o.g. .*.|
            00000160 2f 0a 2f 2a 21 2a 2f 3b 0a 44 45 4c 49 4d 49 54 |/./*!*/;.DELIMIT|
            {noformat}

            When the binlog is replayed, no errors are issued upon the corrupt {{DROP}} (surprisingly), it just gets ignored.

            The server was running with the following options (I'm not sure if any of them are important):
            {noformat}
            --plugin-load-add=ha_blackhole \
            --innodb-purge-threads=32 \
            --innodb-checksum-algorithm=full_crc32 \
            --innodb-compression-algorithm=none \
            --innodb-log-file-size=256M \
            --innodb-write-io-threads=2 \
            --innodb-flush-method=fsync \
            --innodb-sort-buffer-size=64K \
            --log_output=FILE \
            --max-statement-time=30 \
            --lock-wait-timeout=10 \
            --innodb-lock-wait-timeout=5 \
            --performance-schema=on \
            --performance-schema-instrument=%=ON \
            --performance-schema-consumer-events-stages-current=ON \
            --performance-schema-consumer-events-stages-history=ON \
            --performance-schema-consumer-events-stages-history-long=ON \
            --performance-schema-consumer-events-statements-current=ON \
            --performance-schema-consumer-events-statements-history=ON \
            --performance-schema-consumer-events-statements-history-long=ON \
            --performance-schema-consumer-events-waits-current=ON \
            --performance-schema-consumer-events-waits-history=ON \
            --performance-schema-consumer-events-waits-history-long=ON \
            --performance-schema-consumer-global-instrumentation=ON \
            --performance-schema-consumer-thread-instrumentation=ON \
            --performance-schema-consumer-statements-digest=ON \
            --performance-schema-consumer-events-transactions-current=ON \
            --performance-schema-consumer-events-transactions-history=ON \
            --performance-schema-consumer-events-transactions-history-long=ON \
            --binlog-format=mixed \
            --log-bin \
            --log_bin_trust_function_creators=1 \
            --character-set-server=ucs2 \
            --collation-server=ucs2_croatian_ci \
            --log-tc-size=1M \
            --thread-handling=pool-of-threads \
            --explicit-defaults-for-timestamp=on \
            --max-digest-length=0 \
            --skip-external-locking=OFF
            {noformat}
            As a part of atomic DDL testing, the server was intentionally crashed (SIGKILL-ed) while executing concurrent DDL. One of the threads was running
            {code:sql}
            DROP TABLE IF EXISTS transforms.insert_select_18282
            {code}
            on an existing InnoDB table.
            After the crash .frm and .ibd files still existed.
            Upon recovery the table was dropped, no error messages produced.
            A binlog event for the drop was written.
            However, the event is corrupt: each character in the {{DROP}} statement is followed by {{\0}}:
            {noformat:title=bb-10.6-monty 9cd2bc6b4}
            # at 384
            #700101 2:00:00 server id 1 end_log_pos 614 CRC32 0xac0af65a Query thread_id=0 exec_time=1620081899 error_code=0
            use `test`/*!*/;
            SET TIMESTAMP=0/*!*/;
            SET @@session.pseudo_thread_id=0/*!*/;
            SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0/*!*/;
            SET @@session.sql_mode=1411383296/*!*/;
            SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
            /*!\C latin1 *//*!*/;
            SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=640/*!*/;
            SET @@session.lc_time_names=0/*!*/;
            SET @@session.collation_database=DEFAULT/*!*/;
            ^@D^@R^@O^@P^@ ^@T^@A^@B^@L^@E^@ ^@I^@F^@ ^@E^@X^@I^@S^@T^@S^@ ^@`^@t^@r^@a^@n^@s^@f^@o^@r^@m^@s^@`.^@`^@i^@n^@s^@e^@r^@t^@_^@s^@e^@l^@e^@c^@t^@_^@1^@8^@2^@8^@2^@`^@ ^@/^@*^@ ^@g^@e^@n^@e^@r^@a^@t^@e^@d^@
            ^@b^@y^@ ^@d^@d^@l^@ ^@l^@o^@g^@ ^@*^@/
            /*!*/;
            DELIMITER ;
            # End of log file
            {noformat}
            {noformat}
            000000b0 44 45 46 41 55 4c 54 2f 2a 21 2a 2f 3b 0a 00 44 |DEFAULT/*!*/;..D|
            000000c0 00 52 00 4f 00 50 00 20 00 54 00 41 00 42 00 4c |.R.O.P. .T.A.B.L|
            000000d0 00 45 00 20 00 49 00 46 00 20 00 45 00 58 00 49 |.E. .I.F. .E.X.I|
            000000e0 00 53 00 54 00 53 00 20 00 60 00 74 00 72 00 61 |.S.T.S. .`.t.r.a|
            000000f0 00 6e 00 73 00 66 00 6f 00 72 00 6d 00 73 00 60 |.n.s.f.o.r.m.s.`|
            00000100 2e 00 60 00 69 00 6e 00 73 00 65 00 72 00 74 00 |..`.i.n.s.e.r.t.|
            00000110 5f 00 73 00 65 00 6c 00 65 00 63 00 74 00 5f 00 |_.s.e.l.e.c.t._.|
            00000120 31 00 38 00 32 00 38 00 32 00 60 00 20 00 2f 00 |1.8.2.8.2.`. ./.|
            00000130 2a 00 20 00 67 00 65 00 6e 00 65 00 72 00 61 00 |*. .g.e.n.e.r.a.|
            00000140 74 00 65 00 64 00 20 00 62 00 79 00 20 00 64 00 |t.e.d. .b.y. .d.|
            00000150 64 00 6c 00 20 00 6c 00 6f 00 67 00 20 00 2a 00 |d.l. .l.o.g. .*.|
            00000160 2f 0a 2f 2a 21 2a 2f 3b 0a 44 45 4c 49 4d 49 54 |/./*!*/;.DELIMIT|
            {noformat}

            When the binlog is replayed, no errors are issued upon the corrupt {{DROP}} (surprisingly), it just gets ignored.

            Please also note {{TIMESTAMP=0}}. I don't yet know if it can have any negative effect, but it doesn't look healthy.

            The server was running with the following options (just in case any of them are important):
            {noformat}
            --plugin-load-add=ha_blackhole \
            --innodb-purge-threads=32 \
            --innodb-checksum-algorithm=full_crc32 \
            --innodb-compression-algorithm=none \
            --innodb-log-file-size=256M \
            --innodb-write-io-threads=2 \
            --innodb-flush-method=fsync \
            --innodb-sort-buffer-size=64K \
            --log_output=FILE \
            --max-statement-time=30 \
            --lock-wait-timeout=10 \
            --innodb-lock-wait-timeout=5 \
            --performance-schema=on \
            --performance-schema-instrument=%=ON \
            --performance-schema-consumer-events-stages-current=ON \
            --performance-schema-consumer-events-stages-history=ON \
            --performance-schema-consumer-events-stages-history-long=ON \
            --performance-schema-consumer-events-statements-current=ON \
            --performance-schema-consumer-events-statements-history=ON \
            --performance-schema-consumer-events-statements-history-long=ON \
            --performance-schema-consumer-events-waits-current=ON \
            --performance-schema-consumer-events-waits-history=ON \
            --performance-schema-consumer-events-waits-history-long=ON \
            --performance-schema-consumer-global-instrumentation=ON \
            --performance-schema-consumer-thread-instrumentation=ON \
            --performance-schema-consumer-statements-digest=ON \
            --performance-schema-consumer-events-transactions-current=ON \
            --performance-schema-consumer-events-transactions-history=ON \
            --performance-schema-consumer-events-transactions-history-long=ON \
            --binlog-format=mixed \
            --log-bin \
            --log_bin_trust_function_creators=1 \
            --character-set-server=ucs2 \
            --collation-server=ucs2_croatian_ci \
            --log-tc-size=1M \
            --thread-handling=pool-of-threads \
            --explicit-defaults-for-timestamp=on \
            --max-digest-length=0 \
            --skip-external-locking=OFF
            {noformat}
            monty Michael Widenius made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            monty Michael Widenius made changes -
            issue.field.resolutiondate 2021-05-04 11:36:51.0 2021-05-04 11:36:51.598
            monty Michael Widenius made changes -
            Fix Version/s N/A [ 14700 ]
            Fix Version/s 10.6 [ 24028 ]
            Resolution Fixed [ 1 ]
            Status In Progress [ 3 ] Closed [ 6 ]
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 121599 ] MariaDB v4 [ 159234 ]

            People

              monty Michael Widenius
              elenst Elena Stepanova
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.