| Bug #26296 | falcon tablespace becomes corrupted after "mysqladmin shutdown" | ||
|---|---|---|---|
| Submitted: | 12 Feb 2007 21:50 | Modified: | 2 Jul 2007 4:53 |
| Reporter: | Shane Bester (Platinum Quality Contributor) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Falcon storage engine | Severity: | S2 (Serious) |
| Version: | 5.2.3-falcon-alpha-debug | OS: | Linux (suse9.3 x86) |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | crash, tablespace corruption | ||
[12 Feb 2007 21:50]
Shane Bester
[13 Feb 2007 10:35]
MySQL Verification Team
simply have many inserts/update to a table, and then issue "mysqladmin shutdown" so that the server has a clean shutdown will cause a problem. when you start the server again, SHOW TABLE STATUS will crash it.
[13 Feb 2007 11:09]
MySQL Verification Team
run the testcase in but #26298 for a few seconds (to cause db traffic), then control-c it, and issue "mysqladmin shutdown" then, run mysqld_safe again, and quickly run a SHOW TABLE STATUS. will crash immediately. a clean shutdown of the database causes entire falcon tablespace to be corrupted to the extent you have to rm -rf the datadir..
[13 Feb 2007 14:18]
Hakan Küçükyılmaz
I could reproduce this as described. I used the test program with following parameters
--queryfile=falcon.query --threads=15 --duration=1800 --shuffle-queries=1 -generate-queryfile=0
I did a mysqladmin shutdown after > 30 seconds then restarted mysqld and issued a SHOW TABLE STATUS.
We hit following assertion:
(gdb) bt
#0 0xffffe410 in __kernel_vsyscall ()
#1 0x40182541 in raise () from /lib/tls/libc.so.6
#2 0x08457822 in Error::debugBreak () at Error.cpp:93
#3 0x0845787f in Error::error (
string=0x8764598 "assertion failed at line %d in file %s\n")
at Error.cpp:70
#4 0x0845790f in Error::assertionFailed (fileName=0x876ed59 "BDB.cpp",
line=72) at Error.cpp:77
#5 0x084d238e in Bdb::mark (this=0x417901d0, transId=0) at BDB.cpp:72
#6 0x0846b21d in IndexRootPage::indexMerge (dbb=0x404fab3c, indexId=45,
logRecord=0x4175a8f4, transId=0) at IndexRootPage.cpp:921
#7 0x084bd0b6 in SRLUpdateIndex::execute (this=0x4175a8f4)
at SRLUpdateIndex.cpp:155
#8 0x084bd199 in SRLUpdateIndex::redo (this=0x4175a8f4)
at SRLUpdateIndex.cpp:127
#9 0x084a4338 in SerialLog::recover (this=0x41795614) at SerialLog.cpp:354
#10 0x0844a3de in Database::openDatabase (this=0x4175e028,
filename=0x4175ab80 "/data/mysql-sap/test.fts") at Database.cpp:603
#11 0x0843ef55 in Connection::getDatabase (this=0x404fa9dc,
dbName=0x404fa7dc "test",
dbFileName=0x4175ab80 "/data/mysql-sap/test.fts", threads=0x404fa820)
at Connection.cpp:1643
Regards, Hakan
[18 Apr 2007 0:31]
Hakan Küçükyılmaz
With latest Falcon we are hitting different assertion:
[Switching to Thread 1082665312 (LWP 16916)]
0x00002b07c45fd2ac in raise () from /lib/libpthread.so.0
(gdb) bt
#0 0x00002b07c45fd2ac in raise () from /lib/libpthread.so.0
#1 0x00000000007c31f2 in Error::debugBreak () at Error.cpp:93
#2 0x00000000007c32ed in Error::error (string=<value optimized out>) at Error.cpp:70
#3 0x00000000007c334c in Error::assertionFailed (fileName=0x4 <Address 0x4 out of bounds>, line=16916)
at Error.cpp:77
#4 0x00000000007d1183 in IndexRootPage::findInsertionLeaf (dbb=0x2aaaab0337b8, indexId=40,
indexKey=0x4087e0c0, recordNumber=2663, transId=<value optimized out>) at IndexRootPage.cpp:305
#5 0x00000000007d24f6 in IndexRootPage::indexMerge (dbb=0x2aaaab0337b8, indexId=40, logRecord=0x4087f1a8,
transId=0) at IndexRootPage.cpp:872
#6 0x000000000080de19 in SRLUpdateIndex::execute (this=0x4087f1a8) at SRLUpdateIndex.cpp:162
#7 0x000000000080de37 in SRLUpdateIndex::redo (this=0x420e) at SRLUpdateIndex.cpp:133
#8 0x00000000007fd289 in SerialLog::recover (this=0x2aaaaafa3928) at SerialLog.cpp:321
#9 0x00000000007b718b in Database::openDatabase (this=0x2aaaaaf372e0,
filename=0x4087f3f0 "/data/mysql-sap/test.fts") at Database.cpp:607
#10 0x00000000007afd7d in Connection::getDatabase (this=0x2aaaab007e50, dbName=0x2aaaab03288c "TEST",
dbFileName=0x4087f3f0 "/data/mysql-sap/test.fts", threads=0x2aaaab00a1b8) at Connection.cpp:1645
#11 0x00000000007b0a41 in Connection::openDatabase (this=0x2aaaab007e50, dbName=0x2aaaab03288c "TEST",
filename=<value optimized out>, account=0x9d6cfc "mysql", password=0x9d6cfc "mysql", address=0x0,
parent=0x2aaaab00a1b8) at Connection.cpp:925
#12 0x0000000000791233 in StorageDatabase::getOpenConnection (this=0x2aaaab033030)
at StorageDatabase.cpp:158
#13 0x000000000078fa47 in StorageConnection::connect (this=0x2aaaab02fd18) at StorageConnection.cpp:138
#14 0x0000000000793772 in StorageHandler::getStorageConnection (this=0x2aaaaae00048,
tableShare=0x2aaaab0011c8, mySqlThread=0xe4e088, mySqlThdId=1, createFlag=OpenDatabase)
[26 Jun 2007 18:42]
Jim Starkey
I don't have any idea how to reproduce this. Are the sources of the test program available somewhere?
[26 Jun 2007 21:25]
Hakan Küçükyılmaz
Ran test case ./testcase_26298 --queryfile=falcon.query --threads=15 --duration=1800 --shuffle-queries=1 --generate-queryfile=0 issued shutdown after 30 seconds and restarted mysqld. However mysqladmin -uroot shutdown did not shutdown properly due to Bug#29133. Therefore I had to kill mysqld. --> No crash anymore. Best regards, Hakan
[2 Jul 2007 4:53]
MC Brown
A note has been added to the 6.0.1 changelog: Under certain situations, shutting down MySQL using mysqladmin could cause Falcon to corrupt the database tables and fail to restart properly. (Bug#26296)
