PS-10231 [9.x]: Fix DBLWR recovery tests for compressed+encrypted pages#5844
Merged
inikep merged 1 commit intopercona:trunkfrom Mar 2, 2026
Merged
PS-10231 [9.x]: Fix DBLWR recovery tests for compressed+encrypted pages#5844inikep merged 1 commit intopercona:trunkfrom
inikep merged 1 commit intopercona:trunkfrom
Conversation
The innodb.dblwr_lz4_encrypt_recv and innodb.dblwr_zlib_encrypt_recv tests were failing because the DBLWR copy of the test table's root page was being overwritten by background flush activity (undo purge, system tablespace) between FLUSH TABLES FOR EXPORT and SIGKILL. This race became more likely after Bug#37684656 reduced the DBLWR buffer size. Additionally, without pending redo records for the test tablespace after checkpoint, crash recovery never opened it, so the per-space DBLWR recovery path never executed. Restructure both tests to follow the robust pattern used by innodb.dblwr_encrypt_recover: - Wait for purge to complete before flushing - Disable master thread and checkpoint after flush to prevent background DBLWR slot reuse - Perform an uncommitted INSERT to generate pending redo records, ensuring the tablespace is opened during crash recovery - Kill the server first, then corrupt the page externally while the server is down (guaranteeing the DBLWR copy survives) - Zero the entire page (ALL_ZEROES=1) because for compressed pages with punch hole, the second half is already zeros so partial corruption has no effect - Add master.opt with --innodb_doublewrite_pages=512 for extra margin
Collaborator
Author
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
innodb.dblwr_lz4_encrypt_recvandinnodb.dblwr_zlib_encrypt_recv testswere failing because the DBLWR copy of the test table's root page was being overwritten by background flush activity (undo purge, system tablespace) between FLUSH TABLES FOR EXPORT and SIGKILL. This race became more likely afterBug#37684656reduced the DBLWR buffer size.Additionally, without pending redo records for the test tablespace after checkpoint, crash recovery never opened it, so the per-space DBLWR recovery path never executed.
Restructure both tests to follow the robust pattern used by
innodb.dblwr_encrypt_recover:--innodb_doublewrite_pages=512for extra margin