Bug #74676 | Got error -1 from storage engine on truncate table statement | ||
---|---|---|---|
Submitted: | 4 Nov 2014 4:27 | Modified: | 12 Nov 2014 18:11 |
Reporter: | Ramesh Sivaraman | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: DDL | Severity: | S3 (Non-critical) |
Version: | 5.6.20-debug, 5.6.21 | OS: | Linux (CentOS 7) |
Assigned to: | CPU Architecture: | Any |
[4 Nov 2014 4:27]
Ramesh Sivaraman
[4 Nov 2014 6:07]
MySQL Verification Team
Hello Ramesh Sivaraman, Thank you for the bug report and test case. Confirmed the issue with debug build of 5.6.21. Thanks, Umes
[4 Nov 2014 6:08]
MySQL Verification Team
// 5.6.21 debug build only mysql> show variables like '%version%'; +-------------------------+--------------------------------------+ | Variable_name | Value | +-------------------------+--------------------------------------+ | innodb_version | 5.6.21 | | protocol_version | 10 | | slave_type_conversions | | | version | 5.6.21-debug | | version_comment | MySQL Community Server - Debug (GPL) | | version_compile_machine | x86_64 | | version_compile_os | linux-glibc2.5 | +-------------------------+--------------------------------------+ 7 rows in set (0.00 sec) mysql> DROP DATABASE test;CREATE DATABASE test;USE test; Query OK, 0 rows affected (0.00 sec) Query OK, 1 row affected (0.00 sec) Database changed mysql> CREATE TABLE t1(c1 INT); Query OK, 0 rows affected (0.03 sec) mysql> set global innodb_trx_rseg_n_slots_debug=1; Query OK, 0 rows affected (0.00 sec) mysql> insert INTO t1 values(1),(1),(1),(1); Query OK, 4 rows affected (0.01 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> truncate TABLE t1; ERROR 1030 (HY000): Got error -1 from storage engine // 2014-11-06 13:09:56 7f40edc93700 InnoDB: Warning: cannot find a free slot for an undo log. Do you have too InnoDB: many active transactions running concurrently? 2014-11-06 13:09:56 7f40edc93700 InnoDB: Unable to assign a new identifier to table `test`.`t1` InnoDB: after truncating it. Background processes may corrupt the table! 2014-11-06 13:10:28 7f40edc93700 InnoDB: table "test"."t1"is corrupted. Please drop the table and recreate 2014-11-06 13:10:28 323 [Warning] InnoDB: Cannot open table test/t1 from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6 /en/innodb-troubleshooting.html for how you can resolve the problem. 2014-11-06 13:10:29 7f40edc93700 InnoDB: table "test"."t1"is corrupted. Please drop the table and recreate 2014-11-06 13:10:29 323 [Warning] InnoDB: Cannot open table test/t1 from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6 /en/innodb-troubleshooting.html for how you can resolve the problem.
[4 Nov 2014 6:16]
MySQL Verification Team
// with 5.7.6 debug build mysql> create database if not exists test; Query OK, 1 row affected (0.00 sec) mysql> DROP DATABASE test;CREATE DATABASE test;USE test; Query OK, 0 rows affected (0.01 sec) Query OK, 1 row affected (0.00 sec) Database changed mysql> CREATE TABLE t1(c1 INT); set global innodb_trx_rseg_n_slots_debug=1; Query OK, 0 rows affected (0.04 sec) mysql> set global innodb_trx_rseg_n_slots_debug=1; Query OK, 0 rows affected (0.00 sec) mysql> insert INTO t1 values(1),(1),(1),(1); truncate TABLE t1; Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> truncate TABLE t1; create TABLE t1(a CHAR (1)charset utf8 collate utf8_bin,b int,primary key (a)) select a,1 as c FROM t1;ERROR 1637 (HY000): Too many active concurrent transactions mysql> create TABLE t1(a CHAR (1)charset utf8 collate utf8_bin,b int,primary key (a)) select a,1 as c FROM t1; ERROR 1050 (42S01): Table 't1' already exists mysql> truncate TABLE t1; ERROR 1637 (HY000): Too many active concurrent transactions mysql> truncate TABLE t1; ERROR 1637 (HY000): Too many active concurrent transactions mysql> truncate TABLE t1; ERROR 1637 (HY000): Too many active concurrent transactions mysql> truncate TABLE t1; ERROR 1637 (HY000): Too many active concurrent transactions mysql> DROP DATABASE test;CREATE DATABASE test;USE test; ERROR 177 (HY000): Too many active concurrent transactions ERROR 1007 (HY000): Can't create database 'test'; database exists Database changed mysql> CREATE TABLE t1(c1 INT); ERROR 1050 (42S01): Table 't1' already exists mysql> set global innodb_trx_rseg_n_slots_debug=1; Query OK, 0 rows affected (0.00 sec) mysql> insert INTO t1 values(1),(1),(1),(1); truncate TABLE t1; create TABLE t1(a CHAR (1)charset utf8 collate utf8_bin,b int,primary key (a)) select a,1 as c FROM t1; ERROR 2013 (HY000): Lost connection to MySQL server during query (gdb) bt #0 0x0000003deb00c8ac in pthread_kill () from /lib64/libpthread.so.0 #1 0x0000000000f990a1 in my_write_core (sig=6) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/mysys/stacktrace.c:247 #2 0x000000000092d7cc in handle_fatal_signal (sig=6) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/sql/signal_handler.cc:219 #3 <signal handler called> #4 0x0000003deac32625 in raise () from /lib64/libc.so.6 #5 0x0000003deac33e05 in abort () from /lib64/libc.so.6 #6 0x000000000121b81b in ut_dbg_assertion_failed (expr=0x175ace8 "index->id == btr_page_get_index_id(page)", file=0x175a248 "/pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/btr/btr0cur.cc", line=1238) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/ut/ut0dbg.cc:67 #7 0x0000000001247ebf in btr_cur_search_to_nth_level (index=0x7f1e30027898, level=0, tuple=0x7f1e30039028, mode=PAGE_CUR_LE, latch_mode=2, cursor=0x7f1e7003c880, has_search_latch=0, file=0x171a330 "/pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/row/row0ins.cc", line=2351, mtr=0x7f1e7003c050) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/btr/btr0cur.cc:1238 #8 0x0000000001136bc6 in btr_pcur_open_low (index=0x7f1e30027898, level=0, tuple=0x7f1e30039028, mode=PAGE_CUR_LE, latch_mode=2, cursor=0x7f1e7003c880, file=0x171a330 "/pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/row/row0ins.cc", line=2351, mtr=0x7f1e7003c050) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/include/btr0pcur.ic:455 #9 0x000000000113bd9b in row_ins_clust_index_entry_low (flags=0, mode=2, index=0x7f1e30027898, n_uniq=0, entry=0x7f1e30039028, n_ext=0, thr=0x7f1e3003a470, dup_chk_only=false) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/row/row0ins.cc:2351 #10 0x000000000113e18a in row_ins_clust_index_entry (index=0x7f1e30027898, entry=0x7f1e30039028, thr=0x7f1e3003a470, n_ext=0, dup_chk_only=false) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/row/row0ins.cc:3158 #11 0x000000000113e626 in row_ins_index_entry (index=0x7f1e30027898, entry=0x7f1e30039028, thr=0x7f1e3003a470) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/row/row0ins.cc:3281 #12 0x000000000113eab2 in row_ins_index_entry_step (node=0x7f1e3003a228, thr=0x7f1e3003a470) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/row/row0ins.cc:3422 #13 0x000000000113ee40 in row_ins (node=0x7f1e3003a228, thr=0x7f1e3003a470) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/row/row0ins.cc:3564 #14 0x000000000113f3b3 in row_ins_step (thr=0x7f1e3003a470) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/row/row0ins.cc:3735 #15 0x000000000115b0fa in row_insert_for_mysql_using_ins_graph (mysql_rec=0x7f1e30033ef0 "\375\001", prebuilt=0x7f1e30039d38) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/row/row0mysql.cc:1570 #16 0x000000000115b5cd in row_insert_for_mysql (mysql_rec=0x7f1e30033ef0 "\375\001", prebuilt=0x7f1e30039d38) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/row/row0mysql.cc:1681 #17 0x000000000103d3e1 in ha_innobase::write_row (this=0x7f1e30033c20, record=0x7f1e30033ef0 "\375\001") at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/innobase/handler/ha_innodb.cc:6697 #18 0x000000000099f23c in handler::ha_write_row (this=0x7f1e30033c20, buf=0x7f1e30033ef0 "\375\001") at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/sql/handler.cc:7443 #19 0x0000000000e92911 in write_record (thd=0x7f1e30000cf0, table=0x7f1e30038610, info=0x7f1e7003dca0, update=0x7f1e7003dc20) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/sql/sql_insert.cc:1680 #20 0x0000000000e901a1 in mysql_insert (thd=0x7f1e30000cf0, table_list=0x7f1e30005d98, fields=..., values_list=..., update_fields=..., update_values=..., duplic=DUP_ERROR) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/sql/sql_insert.cc:708 #21 0x0000000000cb6855 in mysql_execute_command (thd=0x7f1e30000cf0) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/sql/sql_parse.cc:3338 #22 0x0000000000cbce6a in mysql_parse (thd=0x7f1e30000cf0, parser_state=0x7f1e7003f660) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/sql/sql_parse.cc:5397 #23 0x0000000000cb0f2c in dispatch_command (command=COM_QUERY, thd=0x7f1e30000cf0, packet=0x7f1e30009a21 "insert INTO t1 values(1),(1),(1),(1)", packet_length=36) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/sql/sql_parse.cc:1249 #24 0x0000000000cafbd4 in do_command (thd=0x7f1e30000cf0) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/sql/sql_parse.cc:833 #25 0x0000000000dbe89c in handle_connection (arg=0x436ba00) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/sql/conn_handler/connection_handler_per_thread.cc:298 #26 0x000000000138347f in pfs_spawn_thread (arg=0x41c1e60) at /pb2/build/sb_0-13559856-1414670154.69/mysqlcom-pro-5.7.6-m16/storage/perfschema/pfs.cc:2137 #27 0x0000003deb0079d1 in start_thread () from /lib64/libpthread.so.0 #28 0x0000003deace89dd in clone () from /lib64/libc.so.6
[12 Nov 2014 18:11]
Daniel Price
Fixed as of the upcoming 5.7.6 release, and here's the changelog entry: A failed "DROP TABLE" operation could leave a table in an inconsistent state without marking the table as corrupted.
[12 Nov 2014 19:30]
Roel Van de Paar
Great. Can it also be back ported to 5.6?