Bug #54742 | Crash while dropping a table, unable to recover | ||
---|---|---|---|
Submitted: | 23 Jun 2010 15:06 | Modified: | 30 Dec 2012 10:15 |
Reporter: | Tomas Are Haavet | Email Updates: | |
Status: | Can't repeat | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S2 (Serious) |
Version: | 5.5.4-m3 | OS: | Linux |
Assigned to: | Sveta Smirnova | CPU Architecture: | Any |
[23 Jun 2010 15:06]
Tomas Are Haavet
[23 Jun 2010 15:12]
Tomas Are Haavet
Snippet from mysql server error log file
Attachment: err.log (text/x-log), 6.66 KiB.
[23 Jun 2010 15:13]
Tomas Are Haavet
my.cnf file
Attachment: my.cnf (application/octet-stream, text), 2.26 KiB.
[24 Jun 2010 11:35]
Sveta Smirnova
Thank you for the report. I can not repeat described behavior using artificial test: I get error "table not exists", but server is running and did not crash again. Please enable core files and next time when server crashes while dropping large table upload core file and mysqld to our FTP server. I want to check where DROP TABLE stopped working.
[28 Jun 2010 8:08]
Tomas Are Haavet
Thanks for your quick response and trying to reproduce. So your server did not crash while dropping the table? Did it take more than 600sec? I'm pretty sure my query were running for 15-20min before the server crashed itself. We can enable core files and report back if it happens again, but I highly doubt we will be in this situation again, as it is not a every day situation and could put us out of business if we can not recover... :) Would it be better to truncate the table first? Anyway, to get the server up and running again and without much in-depth knowledge of the mysql internals, we figured we had to skip recovery of the transaction against the dropped table, but we couldn't find any information about this online. So we ended up temporary commenting out lines 503-516 in storage/innobase/trx/trx0roll.c (the call to dict_table_get_on_id_low()) to skip it. Could this have been done another way?
[28 Jun 2010 8:50]
Sveta Smirnova
Thank you for the feedback. I modified source code to let DROP TABLE run for 600 seconds. Problem is crash was when some event occurred during drop table. This event is hard to guess, but core file should show where DROP TABLE stopped. Also is not clear if semaphore wait was due to long-running DROP command, or occurred during other operations.
[28 Jul 2010 23:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[8 Sep 2010 16:00]
Mark Callaghan
This might be http://bugs.mysql.com/bug.php?id=54009 and is similar to http://bugs.mysql.com/bug.php?id=56373. The fix might be to mask DICT_TF_COMPACT when fil_open_single_table_tablespace is called.
[30 Dec 2012 10:15]
MySQL Verification Team
Hi Thomas, Please use 5.6.9 and check if problems persist. 5.5.4 is hardly worthy of production load. See also bug #54009 and bug #56373