[MDEV-7046] MySQL#74480 - Failing assertion: os_file_status(newpath, &exists, &type) after Operating system error number 36 in a file operation Created: 2014-11-08  Updated: 2014-11-25  Resolved: 2014-11-25

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB, Storage Engine - XtraDB
Affects Version/s: 10.0
Fix Version/s: 10.0.16

Type: Bug Priority: Minor
Reporter: Elena Stepanova Assignee: Jan Lindström (Inactive)
Resolution: Fixed Votes: 0
Labels: upstream

Issue Links:
Relates
relates to MDEV-7057 Track most important upstream bugs wh... Closed

 Description   

Initially reported by Ramesh Sivaraman at http://bugs.mysql.com/bug.php?id=74480, re-filing here to make it searchable in JIRA and to preserve the test case.

Test case

create table t1(f1 INT,f2 INT,f3 CHAR (10),primary key(f1,f2)) partition by range(f1) subpartition by hash(f2) subpartitions 2 (partition p1 values less than (0),partition p2 values less than (2),partition p3 values less than (2147483647));
RENAME TABLE t1 TO `t2_new..............................................end`;

2014-11-08 17:24:48 7f142d6fa700  InnoDB: Operating system error number 36 in a file operation.
InnoDB: Error number 36 means 'File name too long'.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/operating-system-error-codes.html
141108 17:24:48 [ERROR] InnoDB: File ./test/t2_new@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002eend#P#p1#SP#p1sp0.ibd: 'stat' returned OS error 136.
2014-11-08 17:24:48 7f142d6fa700  InnoDB: Assertion failure in thread 139724638365440 in file os0file.cc line 2113
InnoDB: Failing assertion: os_file_status(newpath, &exists, &type)
InnoDB: We intentionally generate a memory trap.

#5  0x00007f142b77f7c0 in *__GI_abort () at abort.c:92
#6  0x0000000000a8b72e in os_file_rename_func (oldpath=0x7f1418254e58 "./test/t1#P#p1#SP#p1sp0.ibd", newpath=0x7f141833e938 "./test/t2_new@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@0"...) at 10.0/storage/xtradb/os/os0file.cc:2113
#7  0x0000000000c32b6c in pfs_os_file_rename_func (key=42, oldpath=0x7f1418254e58 "./test/t1#P#p1#SP#p1sp0.ibd", newpath=0x7f141833e938 "./test/t2_new@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@0"..., src_file=0x10be348 "10.0/storage/xtradb/fil/fil0fil.cc", src_line=2990) at 10.0/storage/xtradb/include/os0file.ic:386
#8  0x0000000000c3a766 in fil_rename_tablespace (old_name_in=0x7f142d6f54e0 "test/t1#P#p1#SP#p1sp0", id=4, new_name=0x7f142d6f5c30 "test/t2_new@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002"..., new_path_in=0x0) at 10.0/storage/xtradb/fil/fil0fil.cc:2990
#9  0x0000000000c07aa7 in dict_table_rename_in_cache (table=0x7f141834bc78, new_name=0x7f142d6f5c30 "test/t2_new@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002"..., rename_also_foreigns=1) at 10.0/storage/xtradb/dict/dict0dict.cc:1606
#10 0x0000000000b069f8 in row_rename_table_for_mysql (old_name=0x7f142d6f5e30 "test/t1#P#p1#SP#p1sp0", new_name=0x7f142d6f5c30 "test/t2_new@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002"..., trx=0x7f1418154678, commit=true) at 10.0/storage/xtradb/row/row0mysql.cc:5134
#11 0x0000000000a10aee in innobase_rename_table (trx=0x7f1418154678, from=0x7f142d6f6a60 "./test/t1#P#p1#SP#p1sp0", to=0x7f142d6f6c60 "./test/t2_new@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@0"...) at 10.0/storage/xtradb/handler/ha_innodb.cc:11266
#12 0x0000000000a10d74 in ha_innobase::rename_table (this=0x7f1418019088, from=0x7f142d6f6a60 "./test/t1#P#p1#SP#p1sp0", to=0x7f142d6f6c60 "./test/t2_new@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@0"...) at 10.0/storage/xtradb/handler/ha_innodb.cc:11374
#13 0x0000000000870f4f in handler::ha_rename_table (this=0x7f1418019088, from=0x7f142d6f6a60 "./test/t1#P#p1#SP#p1sp0", to=0x7f142d6f6c60 "./test/t2_new@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@0"...) at 10.0/sql/handler.cc:4237
#14 0x0000000000e0d59c in ha_partition::del_ren_table (this=0x7f141821e080, from=0x7f142d6f7520 "./test/t1", to=0x7f142d6f7730 "./test/t2_new@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@0"...) at 10.0/sql/ha_partition.cc:2318
#15 0x0000000000e09793 in ha_partition::rename_table (this=0x7f141821e080, from=0x7f142d6f7520 "./test/t1", to=0x7f142d6f7730 "./test/t2_new@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@0"...) at 10.0/sql/ha_partition.cc:587
#16 0x0000000000870f4f in handler::ha_rename_table (this=0x7f141821e080, from=0x7f142d6f7520 "./test/t1", to=0x7f142d6f7730 "./test/t2_new@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@002e@0"...) at 10.0/sql/handler.cc:4237
#17 0x0000000000728914 in mysql_rename_table (base=0x7f1421a48270, old_db=0x7f141821d8b0 "test", old_name=0x7f141821d198 "t1", new_db=0x7f141821dec8 "test", new_name=0x7f141821d200 "t2_new", '.' <repeats 46 times>, "end", flags=0) at 10.0/sql/sql_table.cc:5205
#18 0x00000000006a008a in do_rename (thd=0x7f142530b070, ren_table=0x7f141821d2d8, new_db=0x7f141821dec8 "test", new_table_name=0x7f141821d200 "t2_new", '.' <repeats 46 times>, "end", new_table_alias=0x7f141821d8b8 "t2_new", '.' <repeats 46 times>, "end", skip_error=false) at 10.0/sql/sql_rename.cc:276
#19 0x00000000006a0315 in rename_tables (thd=0x7f142530b070, table_list=0x7f141821d2d8, skip_error=false) at 10.0/sql/sql_rename.cc:358
#20 0x000000000069fced in mysql_rename_tables (thd=0x7f142530b070, table_list=0x7f141821d2d8, silent=false) at 10.0/sql/sql_rename.cc:153
#21 0x0000000000683554 in execute_rename_table (thd=0x7f142530b070, first_table=0x7f141821d2d8, all_tables=0x7f141821d2d8) at 10.0/sql/sql_parse.cc:5331
#22 0x000000000067cc2c in mysql_execute_command (thd=0x7f142530b070) at 10.0/sql/sql_parse.cc:3172
#23 0x000000000068586f in mysql_parse (thd=0x7f142530b070, rawbuf=0x7f141821d088 "RENAME TABLE t1 TO `t2_new", '.' <repeats 46 times>, "end`", length=76, parser_state=0x7f142d6f9630) at 10.0/sql/sql_parse.cc:6407
#24 0x0000000000678652 in dispatch_command (command=COM_QUERY, thd=0x7f142530b070, packet=0x7f141a3f2071 "RENAME TABLE t1 TO `t2_new", '.' <repeats 46 times>, "end`", packet_length=76) at 10.0/sql/sql_parse.cc:1299
#25 0x00000000006779f7 in do_command (thd=0x7f142530b070) at 10.0/sql/sql_parse.cc:996
#26 0x00000000007944aa in do_handle_one_connection (thd_arg=0x7f142530b070) at 10.0/sql/sql_connect.cc:1379
#27 0x00000000007941fd in handle_one_connection (arg=0x7f142530b070) at 10.0/sql/sql_connect.cc:1293
#28 0x0000000000ccb4a6 in pfs_spawn_thread (arg=0x7f14253d9df0) at 10.0/storage/perfschema/pfs.cc:1860
#29 0x00007f142d32eb50 in start_thread (arg=<optimized out>) at pthread_create.c:304
#30 0x00007f142b82620d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112

Stack trace from

revision-id: sergii@pisem.net-20141103164737-457hfby1eg82zol9
date: 2014-11-03 17:47:37 +0100
build-date: 2014-11-08 17:30:48 +0400
revno: 4471
branch-nick: 10.0



 Comments   
Comment by Jan Lindström (Inactive) [ 2014-11-10 ]

Test 2:

DROP DATABASE test;CREATE DATABASE test;USE test;
SET @@session.storage_engine=MYISAM;
CREATE TABLE t1(id INT,purchased DATE)PARTITION BY RANGE(YEAR(purchased)) SUBPARTITION BY HASH(TO_DAYS(purchased)) SUBPARTITIONS 2 (PARTITION p0 VALUES LESS THAN MAXVALUE (SUBPARTITION sp0 DATA DIRECTORY='/tmp/not-existing' INDEX DIRECTORY='/tmp/not-existing',SUBPARTITION sp1));
ALTER TABLE t1 ENGINE=InnoDB;

Comment by Jan Lindström (Inactive) [ 2014-11-25 ]

revno: 4513
committer: Jan Lindström <jplindst@mariadb.org>
branch nick: 10.0-bugs
timestamp: Tue 2014-11-25 11:38:01 +0200
message:
MDEV-7046: MySQL#74480 - Failing assertion: os_file_status(newpath, &exists, &type)
after Operating system error number 36 in a file operation.

Analysis: os_file_get_status did not handle error ENAMETOOLONG
correctly.

Fix: Add correct handling for error ENAMETOOLONG. Note that on InnoDB
case the error is not passed all the way up to server. That would
be bigger rewamp.

Generated at Thu Feb 08 07:16:33 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.