[MDEV-13591] InnoDB: Database page corruption on disk or a failed file read and assertion failure Created: 2017-08-19 Updated: 2017-08-28 Resolved: 2017-08-28 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB, Storage Engine - XtraDB |
| Affects Version/s: | 10.1 |
| Fix Version/s: | 10.1.27 |
| Type: | Bug | Priority: | Major |
| Reporter: | Elena Stepanova | Assignee: | Jan Lindström (Inactive) |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
10.2 does not fail. |
| Comments |
| Comment by Jan Lindström (Inactive) [ 2017-08-22 ] |
|
https://github.com/MariaDB/server/commit/ddf7e15dc0052a5da414a05cb27319b42e8147a4 |
| Comment by Marko Mäkelä [ 2017-08-22 ] |
|
I would prefer a lower-level approach: amending the code where the first page of the undo tablespace is already being read for the very first time. We should have the encryption information available already during redo log apply. The submitted patch only reads the information after the redo log has been applied. |
| Comment by Jan Lindström (Inactive) [ 2017-08-23 ] |
|
10.2 is not effected. |
| Comment by Jan Lindström (Inactive) [ 2017-08-23 ] |
|
https://github.com/MariaDB/server/commit/dc465f5af3674f4aa139d4fe496f242cc5947033 My first patch was shorter. Note that no patch needed for 10.2 as crash is not repeatable there. |
| Comment by Marko Mäkelä [ 2017-08-23 ] |
|
Thank you, it is better now. But, please split the function fil_read_first_page() into two, instead of adding a non-obvious parameter to it. |
| Comment by Jan Lindström (Inactive) [ 2017-08-28 ] |
|
Can't use srv_is_undo_tablespace because space_id might not be correctly set at that point as it should be read from first page. Similarly, splitting the function would make the patch longer for GA-release. I will use new parameter called check_first_page that is by default true and from undo-tablespaces false. |
| Comment by Jan Lindström (Inactive) [ 2017-08-28 ] |
|
commit 61096ff214dec68a66efb811aa3a70ef49f06a11 Problem is that page 0 and its possible enrryption information fil_crypt_get_latest_key_version(): Do not send event to fil_read_first_page: Add new parameter does page belong to srv_undo_tablespace_open : Read first page of the tablespace Tested using innodb_encryption with combinations with commit 882f4566e55694b4f68f61ee723678b49d7e0d8f Combinations with innodb-undo-tablespaces to use in test files |