[MDEV-22650] Dirty compressed page checksum validation fails Created: 2020-05-21 Updated: 2020-06-02 Resolved: 2020-06-01 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB |
| Affects Version/s: | 10.5.2, 10.5.3, 10.2, 10.3, 10.4 |
| Fix Version/s: | 10.5.4, 10.2.33, 10.3.24, 10.4.14 |
| Type: | Bug | Priority: | Major |
| Reporter: | Roel Van de Paar | Assignee: | Thirunarayanan Balathandayuthapani |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | not-10.1 | ||
| Issue Links: |
|
||||||||
| Description |
|
Leads to:
Bug confirmed present in: Bug confirmed not present in: Apparently not in 10.5.4? |
| Comments |
| Comment by Roel Van de Paar [ 2020-05-21 ] | |||||
|
Based on frames seen, potentially related to Valgrind issues seen in | |||||
| Comment by Thirunarayanan Balathandayuthapani [ 2020-05-21 ] | |||||
|
Strict_* modes of innodb_checksum_algorithm doesn't accept the page which has other checksum value. 1) Here page initially created with crc32 checksum I think assertion is very strict and wrong in few cases. InnoDB should remove the assertion | |||||
| Comment by Marko Mäkelä [ 2020-05-21 ] | |||||
|
Starting with 10.4, files created with innodb_checksum_algorithm=full_crc32 will always use that algorithm. But the algorithm is intentionally not available for ROW_FORMAT=COMPRESSED (we did not want to introduce a new file format for such tables). The crash is claimed to occur during page flushing, not when reading a page into the buffer pool. The checksum should be calculated during the flushing. So, this report seems legitimate to me, even though I see no valid use case for using anything else than innodb_checksum_algorithm=full_crc32 or innodb_checksum_algorithm=crc32. | |||||
| Comment by Thirunarayanan Balathandayuthapani [ 2020-05-22 ] | |||||
|
buf_LRU_free_page() does write checksum value for compressed page. | |||||
| Comment by Thirunarayanan Balathandayuthapani [ 2020-05-28 ] | |||||
|
patch is in bb-10.2-thiru | |||||
| Comment by Marko Mäkelä [ 2020-05-28 ] | |||||
|
The code change looks OK to me. I would recommend not to add the test case, because the innodb_checksum_algorithm=strict_none could cause crashes in background operations (change buffer merge, purge). | |||||
| Comment by Roel Van de Paar [ 2020-06-02 ] | |||||
|
Secondary testcase to test any fix with
|