[MDEV-12893] innodb.log_data_file_size failed in buildbot with InnoDB: Database page corruption Created: 2017-05-24  Updated: 2017-09-18  Resolved: 2017-09-18

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB, Tests
Affects Version/s: 10.1
Fix Version/s: 10.1.27

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Marko Mäkelä
Resolution: Fixed Votes: 0
Labels: None
Environment:

winx64-debug


Issue Links:
Duplicate
is duplicated by MDEV-13823 innodb.log_data_file_size fails on bu... Closed
Relates
relates to MDEV-11556 InnoDB redo log apply fails to adjust... Closed

 Description   

http://buildbot.askmonty.org/buildbot/builders/winx64-debug/builds/3657/steps/test/logs/stdio

innodb.innodb-alter-debug 'innodb_plugin' w2 [ pass ]    965
innodb.log_data_file_size 'xtradb'       w1 [ fail ]  Found warnings/errors in server log file!
        Test ended at 2017-05-05 18:40:03
line
2017-05-05 18:40:00 5016 [Warning] InnoDB: A copy of page 4:4 in the doublewrite buffer slot 17 is not within space bounds
 
2017-05-05 18:40:00 5016 [Warning] InnoDB: A copy of page 5:4 in the doublewrite buffer slot 23 is not within space bounds
 
2017-05-05 18:40:00 5016 [Warning] InnoDB: A copy of page 6:5 in the doublewrite buffer slot 30 is not within space bounds
 
2017-05-05 18:40:02 4704 [ERROR] InnoDB: Database page corruption on disk or a failed file read of tablespace test/ibd4f page  [page id: space=5, page number=4]. You may have to recover from a backup.
 
2017-05-05 18:40:02 4704 [ERROR] InnoDB: Read operation failed for tablespace ./test/ibd4f.ibd offset 4 with error Page read from tablespace is corrupted.
 
2017-05-05 18:40:02 5016 [ERROR] Plugin 'InnoDB' init function returned error.
 
2017-05-05 18:40:02 5016 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.



 Comments   
Comment by Marko Mäkelä [ 2017-09-18 ]

The test is at fault.

The main purpose of the test is to ensure that data files are extended to the desired size when applying redo log.

The test correctly ensures that no redo log checkpoint occurred after the CREATE TABLE statements. But it does not ensure that nothing was written to the doublewrite buffer for the pages that the test is truncating on purpose.

Apparently, sometimes some of the pages that the test is truncating would already have been written to the doublewrite buffer, causing failure.

Under normal operation, nothing should be written to the doublewrite buffer before the data file has been extended to the appropriate size. Therefore, we should not touch the doublewrite recovery code, but instead make the test more robust, either by zeroing out the offending pages from the doublewrite buffer or by skipping the test if doublewrite buffer entries exist for the files that the test is about to truncate.

Comment by Marko Mäkelä [ 2017-09-18 ]

I pushed a follow-up fix to work around MDEV-12699.

Generated at Thu Feb 08 08:01:18 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.