Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-7046

MySQL#74480 - Failing assertion: os_file_status(newpath, &exists, &type) after Operating system error number 36 in a file operation

    Details

      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
      

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

              Hide
              jplindst Jan Lindström added a comment -

              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;
              
              Show
              jplindst Jan Lindström added a comment - 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;
              Hide
              jplindst Jan Lindström added a comment -

              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.

              Show
              jplindst Jan Lindström added a comment - 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.

                People

                • Assignee:
                  jplindst Jan Lindström
                  Reporter:
                  elenst Elena Stepanova
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  3 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: