[MDEV-25662] Atomic DDL: InnoDB: Expected tablespace id ... but found 0 upon crash recovery Created: 2021-05-12 Updated: 2021-06-10 Resolved: 2021-06-10 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB |
| Affects Version/s: | N/A |
| Fix Version/s: | 10.6.2 |
| Type: | Bug | Priority: | Major |
| Reporter: | Elena Stepanova | Assignee: | Marko Mäkelä |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | rr-profile | ||
| Issue Links: |
|
||||||||
| Description |
|
The failure comes in two flavors. One looks like this:
That is, the error message is thrown once, and then the recovery finishes. I'm not sure whether it's a problem or a bogus message here. Another one looks like this:
Thousands of identical messages are produced within a second. I don't know if it's an endless loop or it would finish eventually, as the test was killing the server after encountering those. In the first case, the server was running DDL in 2 threads when it was sigkilled. The last queries according to the general log were
In the second case, a previously stored backup from MariaBackup was being restored. Logs and data directories are available for both cases. The rr profiles are available for the first one. At least the recovery failure on previously created datadir from case 1 is reproducible on bb-10.6-monty-innodb 98ff31770. |
| Comments |
| Comment by Marko Mäkelä [ 2021-05-12 ] | ||||||||
|
Neither trace in the -1 directory works for me. The more interesting one (the recovery) ends prematurely:
In the -2 directory I see no rr replay traces. | ||||||||
| Comment by Elena Stepanova [ 2021-05-12 ] | ||||||||
|
I've checked the traces in -1 directory. | ||||||||
| Comment by Marko Mäkelä [ 2021-05-14 ] | ||||||||
|
Thank you, the -1 directory works for me now. The server was killed in the middle of DROP /* QNO 16561 CON_ID 27 */ TABLE IF EXISTS vv11, tt13. The transaction for removing persistent statistics was durably committed:
The call returned to row_drop_table_for_mysql(), but row_drop_table_for_mysql() did not finish before the SIGKILL arrived. The SIGKILL arrived during the execution of fil_delete_tablespace(). This seems to be an omission in | ||||||||
| Comment by Marko Mäkelä [ 2021-05-14 ] | ||||||||
|
Correction: the problem is an omission in | ||||||||
| Comment by Marko Mäkelä [ 2021-06-10 ] | ||||||||
|
During the testing of the third part of |