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

partition_debug fails with warnings "Table is open on rename new table"

Details

    Description

      parts.partition_debug fails with 2 warnings "Table: ./test/t1#P#p2 is open on rename new table2"

      This happens only in 10.7 (I could not repeat it with 10.6) when compiled with DBUG
      I can repeat it to 100% on my desktop.

      parts.partition_debug [ fail ] Found warnings/errors in server log file!
      Test ended at 2022-01-24 15:59:58
      line
      Warning: Table: ./test/t1#P#p2 is open on rename new table2
      Warning: Table: ./test/t1#P#p2 is open on rename new table2

      A shorter test case, just for debugging:
      (The normal test case, parts.partition_debug only needs to be extended with this MDEV number). Note that it is the new code for CONVERT PARTITION that is generating the issue.

      As a separate issue, I noticed that the code does try to rename files that does not exists:
      error: error: 7 message: 'Error on rename of './test/tp2.MYD' to './test/t1#P#p2.MYD' (Errcode: 2 "No such file or directory")
      That code could probably be cleaned up so that we don't generate errors/warnings that are not needed (for example by testing if the file exists or not before doing a rename)

      # including crashing tests.
       
      --source include/have_debug.inc
      --source include/have_partition.inc
      # Don't test this under valgrind, memory leaks will occur
      --source include/not_valgrind.inc
      # Crash tests don't work with embedded
      --source include/not_embedded.inc
       
      # Make sure system tables are not open, as the test will kill the server
      # and it will cause corruption errors in the log
      FLUSH TABLES;
       
      --echo #
      --echo # MDEV-22166 CONVERT PARTITION: move out partition into a table
      --echo #
      let $create_statement= create or replace table t1 (x int primary key)
        partition by range(x) (
          partition p1 values less than (10),
          partition p2 values less than (20),
          partition p3 values less than (30),
          partition p4 values less than (40),
          partition p5 values less than (50),
          partition pn values less than maxvalue);
       
      let $insert_statement= insert into t1 values (2), (12), (22), (32), (42), (52);
      let $fail_statement= alter table t1 convert partition p2 to table tp2;
       
      set @save_dbug=@@debug_dbug;
      set session debug_dbug="+d,fail_convert_partition_5";
      --source suite/parts/inc/partition_fail.inc
      set session debug_dbug=@save_dbug;
      set session debug_dbug="+d,fail_convert_partition_11";
      --echo # Already finished DDL logging, so tp2 now exists:
      --source suite/parts/inc/partition_fail.inc
      set session debug_dbug=@save_dbug;
      show create table tp2;
      select * from tp2;
      drop table tp2;
      

      Attachments

        Activity

          monty Michael Widenius created issue -
          monty Michael Widenius made changes -
          Field Original Value New Value
          Assignee Aleksey Midenkov [ midenok ]
          midenok Aleksey Midenkov made changes -
          Status Open [ 1 ] In Progress [ 3 ]
          midenok Aleksey Midenkov made changes -
          Description This happens only in 10.7 (I could not repeat it with 10.6) when compiled with DBUG
          I can repeat it to 100% on my desktop.

          parts.partition_debug [ fail ] Found warnings/errors in server log file!
                  Test ended at 2022-01-24 15:59:58
          line
          Warning: Table: ./test/t1#P#p2 is open on rename new table2
          Warning: Table: ./test/t1#P#p2 is open on rename new table2

          A shorter test case, just for debugging:
          (The normal test case, parts.partition_debug only needs to be extended with this MDEV number). Note that it is the new code for CONVERT PARTITION that is generating the issue.

          As a separate issue, I noticed that the code does try to rename files that does not exists:
          error: error: 7 message: 'Error on rename of './test/tp2.MYD' to './test/t1#P#p2.MYD' (Errcode: 2 "No such file or directory")
          That code could probably be cleaned up so that we don't generate errors/warnings that are not needed (for example by testing if the file exists or not before doing a rename)


          # including crashing tests.

          --source include/have_debug.inc
          --source include/have_partition.inc
          # Don't test this under valgrind, memory leaks will occur
          --source include/not_valgrind.inc
          # Crash tests don't work with embedded
          --source include/not_embedded.inc

          # Make sure system tables are not open, as the test will kill the server
          # and it will cause corruption errors in the log
          FLUSH TABLES;

          --echo #
          --echo # MDEV-22166 CONVERT PARTITION: move out partition into a table
          --echo #
          let $create_statement= create or replace table t1 (x int primary key)
            partition by range(x) (
              partition p1 values less than (10),
              partition p2 values less than (20),
              partition p3 values less than (30),
              partition p4 values less than (40),
              partition p5 values less than (50),
              partition pn values less than maxvalue);

          let $insert_statement= insert into t1 values (2), (12), (22), (32), (42), (52);
          let $fail_statement= alter table t1 convert partition p2 to table tp2;

          set @save_dbug=@@debug_dbug;
          set session debug_dbug="+d,fail_convert_partition_5";
          --source suite/parts/inc/partition_fail.inc
          set session debug_dbug=@save_dbug;
          set session debug_dbug="+d,fail_convert_partition_11";
          --echo # Already finished DDL logging, so tp2 now exists:
          --source suite/parts/inc/partition_fail.inc
          set session debug_dbug=@save_dbug;
          show create table tp2;
          select * from tp2;
          drop table tp2;
          This happens only in 10.7 (I could not repeat it with 10.6) when compiled with DBUG
          I can repeat it to 100% on my desktop.

          parts.partition_debug [ fail ] Found warnings/errors in server log file!
                  Test ended at 2022-01-24 15:59:58
          line
          Warning: Table: ./test/t1#P#p2 is open on rename new table2
          Warning: Table: ./test/t1#P#p2 is open on rename new table2

          A shorter test case, just for debugging:
          (The normal test case, parts.partition_debug only needs to be extended with this MDEV number). Note that it is the new code for CONVERT PARTITION that is generating the issue.

          As a separate issue, I noticed that the code does try to rename files that does not exists:
          error: error: 7 message: 'Error on rename of './test/tp2.MYD' to './test/t1#P#p2.MYD' (Errcode: 2 "No such file or directory")
          That code could probably be cleaned up so that we don't generate errors/warnings that are not needed (for example by testing if the file exists or not before doing a rename)

          {code}
          # including crashing tests.

          --source include/have_debug.inc
          --source include/have_partition.inc
          # Don't test this under valgrind, memory leaks will occur
          --source include/not_valgrind.inc
          # Crash tests don't work with embedded
          --source include/not_embedded.inc

          # Make sure system tables are not open, as the test will kill the server
          # and it will cause corruption errors in the log
          FLUSH TABLES;

          --echo #
          --echo # MDEV-22166 CONVERT PARTITION: move out partition into a table
          --echo #
          let $create_statement= create or replace table t1 (x int primary key)
            partition by range(x) (
              partition p1 values less than (10),
              partition p2 values less than (20),
              partition p3 values less than (30),
              partition p4 values less than (40),
              partition p5 values less than (50),
              partition pn values less than maxvalue);

          let $insert_statement= insert into t1 values (2), (12), (22), (32), (42), (52);
          let $fail_statement= alter table t1 convert partition p2 to table tp2;

          set @save_dbug=@@debug_dbug;
          set session debug_dbug="+d,fail_convert_partition_5";
          --source suite/parts/inc/partition_fail.inc
          set session debug_dbug=@save_dbug;
          set session debug_dbug="+d,fail_convert_partition_11";
          --echo # Already finished DDL logging, so tp2 now exists:
          --source suite/parts/inc/partition_fail.inc
          set session debug_dbug=@save_dbug;
          show create table tp2;
          select * from tp2;
          drop table tp2;
          {code}
          midenok Aleksey Midenkov made changes -
          Environment OpenSuse Leap 15.3
          Compiled with:
          ./BUILD/compile-pentium64-valgrind-max
          Debug build, -DEXTRA_DEBUG
          midenok Aleksey Midenkov made changes -
          Status In Progress [ 3 ] Stalled [ 10000 ]
          midenok Aleksey Midenkov made changes -
          Description This happens only in 10.7 (I could not repeat it with 10.6) when compiled with DBUG
          I can repeat it to 100% on my desktop.

          parts.partition_debug [ fail ] Found warnings/errors in server log file!
                  Test ended at 2022-01-24 15:59:58
          line
          Warning: Table: ./test/t1#P#p2 is open on rename new table2
          Warning: Table: ./test/t1#P#p2 is open on rename new table2

          A shorter test case, just for debugging:
          (The normal test case, parts.partition_debug only needs to be extended with this MDEV number). Note that it is the new code for CONVERT PARTITION that is generating the issue.

          As a separate issue, I noticed that the code does try to rename files that does not exists:
          error: error: 7 message: 'Error on rename of './test/tp2.MYD' to './test/t1#P#p2.MYD' (Errcode: 2 "No such file or directory")
          That code could probably be cleaned up so that we don't generate errors/warnings that are not needed (for example by testing if the file exists or not before doing a rename)

          {code}
          # including crashing tests.

          --source include/have_debug.inc
          --source include/have_partition.inc
          # Don't test this under valgrind, memory leaks will occur
          --source include/not_valgrind.inc
          # Crash tests don't work with embedded
          --source include/not_embedded.inc

          # Make sure system tables are not open, as the test will kill the server
          # and it will cause corruption errors in the log
          FLUSH TABLES;

          --echo #
          --echo # MDEV-22166 CONVERT PARTITION: move out partition into a table
          --echo #
          let $create_statement= create or replace table t1 (x int primary key)
            partition by range(x) (
              partition p1 values less than (10),
              partition p2 values less than (20),
              partition p3 values less than (30),
              partition p4 values less than (40),
              partition p5 values less than (50),
              partition pn values less than maxvalue);

          let $insert_statement= insert into t1 values (2), (12), (22), (32), (42), (52);
          let $fail_statement= alter table t1 convert partition p2 to table tp2;

          set @save_dbug=@@debug_dbug;
          set session debug_dbug="+d,fail_convert_partition_5";
          --source suite/parts/inc/partition_fail.inc
          set session debug_dbug=@save_dbug;
          set session debug_dbug="+d,fail_convert_partition_11";
          --echo # Already finished DDL logging, so tp2 now exists:
          --source suite/parts/inc/partition_fail.inc
          set session debug_dbug=@save_dbug;
          show create table tp2;
          select * from tp2;
          drop table tp2;
          {code}
          parts.partition_debug fails with 2 warnings "Table: ./test/t1#P#p2 is open on rename new table2"

          This happens only in 10.7 (I could not repeat it with 10.6) when compiled with DBUG
          I can repeat it to 100% on my desktop.

          parts.partition_debug [ fail ] Found warnings/errors in server log file!
                  Test ended at 2022-01-24 15:59:58
          line
          Warning: Table: ./test/t1#P#p2 is open on rename new table2
          Warning: Table: ./test/t1#P#p2 is open on rename new table2

          A shorter test case, just for debugging:
          (The normal test case, parts.partition_debug only needs to be extended with this MDEV number). Note that it is the new code for CONVERT PARTITION that is generating the issue.

          As a separate issue, I noticed that the code does try to rename files that does not exists:
          error: error: 7 message: 'Error on rename of './test/tp2.MYD' to './test/t1#P#p2.MYD' (Errcode: 2 "No such file or directory")
          That code could probably be cleaned up so that we don't generate errors/warnings that are not needed (for example by testing if the file exists or not before doing a rename)

          {code}
          # including crashing tests.

          --source include/have_debug.inc
          --source include/have_partition.inc
          # Don't test this under valgrind, memory leaks will occur
          --source include/not_valgrind.inc
          # Crash tests don't work with embedded
          --source include/not_embedded.inc

          # Make sure system tables are not open, as the test will kill the server
          # and it will cause corruption errors in the log
          FLUSH TABLES;

          --echo #
          --echo # MDEV-22166 CONVERT PARTITION: move out partition into a table
          --echo #
          let $create_statement= create or replace table t1 (x int primary key)
            partition by range(x) (
              partition p1 values less than (10),
              partition p2 values less than (20),
              partition p3 values less than (30),
              partition p4 values less than (40),
              partition p5 values less than (50),
              partition pn values less than maxvalue);

          let $insert_statement= insert into t1 values (2), (12), (22), (32), (42), (52);
          let $fail_statement= alter table t1 convert partition p2 to table tp2;

          set @save_dbug=@@debug_dbug;
          set session debug_dbug="+d,fail_convert_partition_5";
          --source suite/parts/inc/partition_fail.inc
          set session debug_dbug=@save_dbug;
          set session debug_dbug="+d,fail_convert_partition_11";
          --echo # Already finished DDL logging, so tp2 now exists:
          --source suite/parts/inc/partition_fail.inc
          set session debug_dbug=@save_dbug;
          show create table tp2;
          select * from tp2;
          drop table tp2;
          {code}
          midenok Aleksey Midenkov made changes -
          Summary parts.partition_debug fails with 2 warnings "Table: ./test/t1#P#p2 is open on rename new table2" parts.partition_debug fails with warnings "Table is open on rename new table"
          midenok Aleksey Midenkov made changes -
          Summary parts.partition_debug fails with warnings "Table is open on rename new table" partition_debug fails with warnings "Table is open on rename new table"
          midenok Aleksey Midenkov made changes -
          Status Stalled [ 10000 ] In Progress [ 3 ]
          midenok Aleksey Midenkov made changes -
          Fix Version/s 10.7.4 [ 27504 ]
          Fix Version/s 10.8.3 [ 27502 ]
          Fix Version/s 10.7 [ 24805 ]
          Resolution Fixed [ 1 ]
          Status In Progress [ 3 ] Closed [ 6 ]

          People

            midenok Aleksey Midenkov
            monty Michael Widenius
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.