Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
MDEV-23832 Crash at startup in Log_event::read_log_event
The crash was caused by improper raising of an error or replication checksum verification at time of the server initialization. As there is no THD object associated with the main initializing thread yet the error text should be assigned with calling a respective macro that is aware of that possibility. Fixed accordingly. [At merging to 10.4 the new test result file needs +# restart: --master_verify_checksum=ON --debug_dbug=+d,corrupt_read_log_event_char that mtr run will hint on.]
- Loading branch information
Showing
3 changed files
with
45 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| set @@global.binlog_checksum = CRC32; | ||
| call mtr.add_suppression("Replication event checksum verification failed"); | ||
| call mtr.add_suppression("Error in Log_event::read_log_event"); | ||
| set @@global.debug_dbug = VALUE; | ||
| set @@global.master_verify_checksum = DO_CHECKSUM; | ||
| set @@global.binlog_checksum = BINLOG_CHECKSUM; | ||
| # EOF the test |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| # The test verifies server binlog-based recovery. | ||
| # | ||
| # MDEV-23832 checksum error at server binlog recovery should not crash | ||
|
|
||
| # The test logic really requires --log-bin. | ||
| --source include/have_binlog_format_mixed.inc | ||
| --source include/have_debug.inc | ||
|
|
||
| --let $do_checksum = `SELECT @@global.master_verify_checksum` | ||
| --let $debug_dbug_saved = `SELECT @@global.debug_dbug` | ||
| --let $binlog_checksum = `SELECT @@global.binlog_checksum` | ||
| set @@global.binlog_checksum = CRC32; | ||
|
|
||
| call mtr.add_suppression("Replication event checksum verification failed"); | ||
| call mtr.add_suppression("Error in Log_event::read_log_event"); | ||
|
|
||
| # Proof of no crash follows. | ||
| # There's no need for actual bin-loggable queries to the server | ||
| --let $restart_parameters= --master_verify_checksum=ON --debug_dbug="+d,corrupt_read_log_event_char" | ||
| --let $shutdown_timeout=0 | ||
| --source include/restart_mysqld.inc | ||
| --let $restart_parameters= | ||
| --let $shutdown_timeout= | ||
|
|
||
| # | ||
| # Cleanup | ||
|
|
||
| --replace_regex /= .*/= VALUE/ | ||
| --eval set @@global.debug_dbug = "$debug_dbug_saved" | ||
|
|
||
| --replace_result $do_checksum DO_CHECKSUM | ||
| --eval set @@global.master_verify_checksum = $do_checksum | ||
| --replace_result $binlog_checksum BINLOG_CHECKSUM | ||
| --eval set @@global.binlog_checksum = $binlog_checksum | ||
| # | ||
| --echo # EOF the test | ||
| # |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters