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

Atomic DDL: InnoDB: Expected tablespace id ... but found 0 upon crash recovery

    XMLWordPrintable

    Details

      Description

      The failure comes in two flavors.

      One looks like this:

      bb-10.6-monty-innodb f179fdefd1

      2021-05-11 19:14:17 0 [ERROR] InnoDB: Expected tablespace id 67 but found 0 in the file ./test/tt13.ibd
      2021-05-11 19:14:17 0 [Note] DDL_LOG: Crash recovery executed 2 entries
      

      That is, the error message is thrown once, and then the recovery finishes. I'm not sure whether it's a problem or a bogus message here.

      Another one looks like this:

      2021-05-12  3:39:01 0 [Note] InnoDB: Creating #2 encryption thread id 140169671862016 total threads 4.
      2021-05-12  3:39:01 0 [Note] InnoDB: Creating #3 encryption thread id 140169663469312 total threads 4.
      2021-05-12  3:39:01 0 [Note] InnoDB: Creating #4 encryption thread id 140169655076608 total threads 4.
      2021-05-12  3:39:01 0 [Note] InnoDB: Buffer pool(s) load completed at 210512  3:39:01
      2021-05-12  3:39:01 0 [ERROR] InnoDB: Expected tablespace id 10 but found 0 in the file ./test/D.ibd
      2021-05-12  3:39:01 0 [ERROR] InnoDB: Expected tablespace id 10 but found 0 in the file ./test/D.ibd
      2021-05-12  3:39:01 0 [ERROR] InnoDB: Expected tablespace id 10 but found 0 in the file ./test/D.ibd
      ...
      2021-05-12  3:39:01 0 [ERROR] InnoDB: Expected tablespace id 10 but found 0 in the file ./test/D.ibd
      

      Thousands of identical messages are produced within a second. I don't know if it's an endless loop or it would finish eventually, as the test was killing the server after encountering those.

      In the first case, the server was running DDL in 2 threads when it was sigkilled. The last queries according to the general log were

      27 Query    DROP /* QNO 16561 CON_ID 27 */ TABLE IF EXISTS vv11, tt13
      26 Query    ALTER /* QNO 507 CON_ID 26 */ TABLE t3 ENGINE=InnoDB, ADD COLUMN IF NOT EXISTS icol3 MEDIUMINT UNSIGNED ZEROFILL DEFAULT 2, LOCK=SHARED
      

      In the second case, a previously stored backup from MariaBackup was being restored.

      Logs and data directories are available for both cases. The rr profiles are available for the first one.

      At least the recovery failure on previously created datadir from case 1 is reproducible on bb-10.6-monty-innodb 98ff31770.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              marko Marko Mäkelä
              Reporter:
              elenst Elena Stepanova
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Git Integration