[MDEV-16654] InnoDB: dict_load_foreigns() returned 38 and Failing assertion: 0 in ha_innodb::commit_inplace_alter_table Created: 2018-07-01 Updated: 2019-04-18 Resolved: 2019-04-18 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB, Storage Engine - XtraDB |
| Affects Version/s: | 10.1 |
| Fix Version/s: | 10.4.3, 10.1.38, 10.0.38, 10.2.22, 10.3.13 |
| Type: | Bug | Priority: | Major |
| Reporter: | Elena Stepanova | Assignee: | Marko Mäkelä |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||||||||||||||
| Description |
|
Run with --repeat if it doesn't fail right away.
Couldn't reproduce on 10.0 or 10.2. Search for the error 38 in dict_load_foreigns gave me only one result: This bug points at the upstream bug https://bugs.mysql.com/bug.php?id=74363 . However, that bug describes a different error in a different place. I suppose there was a reason why the Percona entry says it's the same, but this reason is unknown to me. I hope marko will remember it, as he was looking into the upstream issue at the time. |
| Comments |
| Comment by Marko Mäkelä [ 2018-07-02 ] |
|
Based on a look at the code, 38 should be DB_CANNOT_ADD_CONSTRAINT. I did not debug this yet. This looks different from the mentioned Percona and MySQL bugs, because that test case is injecting a fault (making the undo log allocation fail) by setting the global variable innodb_trx_rseg_n_slots_debug. It is a known issue that if InnoDB fails to allocate an undo log page during ALTER TABLE or DROP INDEX or similar, the entire table may be lost. In MariaDB, this problem would be addressed by MDEV-11655. |
| Comment by Elena Stepanova [ 2018-07-02 ] |
|
The strange thing about Percona / MySQL bugs is that the initial test case by Ramesh Sivaraman doesn't mention innodb_trx_rseg_n_slots_debug at all. But that test case doesn't fail for me on MariaDB. The debug variable only comes up later, when Shane re-wrote the test case, and the Roel says that they use it a lot; so I don't know, maybe it's implied that the initial test case should be run with a certain value of the variable. |
| Comment by Elena Stepanova [ 2019-01-21 ] |
|
See also |
| Comment by Marko Mäkelä [ 2019-04-18 ] |
|
MySQL Bug #74363 is something else and should affect MariaDB too. It is about running out of space for undo log during a DDL transaction. I can repeat this with the parent of the commit that fixed
|