[MDEV-13637] InnoDB change buffer housekeeping can cause redo log overrun and possibly deadlocks Created: 2017-08-24 Updated: 2022-10-28 Resolved: 2017-08-28 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB |
| Affects Version/s: | 5.5, 10.0, 10.1, 10.2, 10.3 |
| Fix Version/s: | 10.0.33, 10.1.27, 10.2.9, 10.3.2 |
| Type: | Bug | Priority: | Major |
| Reporter: | Marko Mäkelä | Assignee: | Marko Mäkelä |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | crash, create_table, deadlock, recovery | ||
| Issue Links: |
|
||||||||||||||||||||||||
| Description |
|
As reported in The worst impact of all is that due to the mutexes being held, calls to log_free_check() must be skipped during this housekeeping. This means that the cyclic InnoDB redo log may be overwritten. If the system crashes during this, it would be unable to recover. The entry point to the problematic code is ibuf_free_excess_pages(). It would make sense to call it before acquiring any mutexes or rw-locks, in any DDL operation and in any 'pessimistic' operation that involves the system tablespace. |
| Comments |
| Comment by Marko Mäkelä [ 2017-08-24 ] | ||
|
bb-10.2-marko | ||
| Comment by Marko Mäkelä [ 2017-08-24 ] | ||
|
For the record, I cannot repeat the equivalent of the 10.2 test in 10.0:
The reason is that only innodb_zip.innodb-zip in 10.0 allows the innodb_page_size=4k combination. | ||
| Comment by Marko Mäkelä [ 2017-08-24 ] | ||
| Comment by Jan Lindström (Inactive) [ 2017-08-25 ] | ||
|
10.0 ok to push, 10.2 can you try to avoid unnecessary code duplication. |