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

Setting innodb_buffer_pool_filename to an empty string attempts to delete the data directory on shutdown

Details

    Description

      Interestingly, the issue is present in MySQL 5.7 and 8.0 as well, but only in those releases.

      SET GLOBAL innodb_buffer_pool_filename='';
      SHUTDOWN;
      

      Leads to:

      11.0.1 b075191ba8598af6aff5549e6e19f6255aef258a (Optimized)

      2023-01-24 15:30:26 0 [Note] InnoDB: FTS optimize thread exiting.
      2023-01-24 15:30:26 0 [Note] InnoDB: Starting shutdown...
      2023-01-24 15:30:26 0 [Note] InnoDB: Dumping buffer pool(s) to /test/MD090123-mariadb-11.0.1-linux-x86_64-opt/data
      2023-01-24 15:30:26 0 [ERROR] InnoDB: Cannot delete '/test/MD090123-mariadb-11.0.1-linux-x86_64-opt/data': Is a directory
      

      Bug confirmed present in:
      MariaDB: 10.3.38 (dbg), 10.3.38 (opt), 10.4.28 (dbg), 10.4.28 (opt), 10.5.19 (dbg), 10.5.19 (opt), 10.6.12 (dbg), 10.6.12 (opt), 10.7.8 (dbg), 10.7.8 (opt), 10.8.7 (dbg), 10.8.7 (opt), 10.9.5 (dbg), 10.9.5 (opt), 10.10.3 (dbg), 10.10.3 (opt), 10.11.2 (opt), 10.11.2 (dbg), 11.0.1 (dbg), 11.0.1 (opt)
      MySQL: 5.7.40 (dbg), 5.7.40 (opt), 8.0.31 (dbg), 8.0.31 (opt)

      Bug (or feature/syntax) confirmed not present in:
      MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.51 (dbg), 5.6.51 (opt)

      Interface change: innodb_buffer_pool_filename is now a read-only variable

      Attachments

        Activity

          Roel Roel Van de Paar created issue -
          Roel Roel Van de Paar made changes -
          Field Original Value New Value
          Summary Setting innodb_buffer_pool_filename to an empty string attempts to delete the data directory Setting innodb_buffer_pool_filename to an empty string attempts to delete the data directory on shutdown

          Theoretically, we could duplicate some logic that is already part of unlink(), maybe poorly. Think of the following, for example:

          SET GLOBAL innodb_buffer_pool_filename='.';
          SET GLOBAL innodb_buffer_pool_filename='./.';
          

          Is there anything that really needs to be fixed? Directories cannot be deleted by unlink(), as the error message indicates. If you think that some other error message should be issued, what should it be? What if the file initially existed as a regular file, but someone deleted the file and created a directory by the same name, and then caused InnoDB to attempt to access the file?

          marko Marko Mäkelä added a comment - Theoretically, we could duplicate some logic that is already part of unlink() , maybe poorly. Think of the following, for example: SET GLOBAL innodb_buffer_pool_filename= '.' ; SET GLOBAL innodb_buffer_pool_filename= './.' ; Is there anything that really needs to be fixed? Directories cannot be deleted by unlink() , as the error message indicates. If you think that some other error message should be issued, what should it be? What if the file initially existed as a regular file, but someone deleted the file and created a directory by the same name, and then caused InnoDB to attempt to access the file?
          marko Marko Mäkelä made changes -
          Assignee Marko Mäkelä [ marko ] Roel Van de Paar [ roel ]
          Status Open [ 1 ] Needs Feedback [ 10501 ]
          Roel Roel Van de Paar made changes -
          Description Interestingly, the issue is present in MySQL 5.7 as well, but only in that release.
          {code}
          SET GLOBAL innodb_buffer_pool_filename='';
          SHUTDOWN;
          {code}
          Leads to:
          {noformat:title=11.0.1 b075191ba8598af6aff5549e6e19f6255aef258a (Optimized)}
          2023-01-24 15:30:26 0 [Note] InnoDB: FTS optimize thread exiting.
          2023-01-24 15:30:26 0 [Note] InnoDB: Starting shutdown...
          2023-01-24 15:30:26 0 [Note] InnoDB: Dumping buffer pool(s) to /test/MD090123-mariadb-11.0.1-linux-x86_64-opt/data
          2023-01-24 15:30:26 0 [ERROR] InnoDB: Cannot delete '/test/MD090123-mariadb-11.0.1-linux-x86_64-opt/data': Is a directory
          {noformat}

          Bug confirmed present in:
          MariaDB: 10.3.38 (dbg), 10.3.38 (opt), 10.4.28 (dbg), 10.4.28 (opt), 10.5.19 (dbg), 10.5.19 (opt), 10.6.12 (dbg), 10.6.12 (opt), 10.7.8 (dbg), 10.7.8 (opt), 10.8.7 (dbg), 10.8.7 (opt), 10.9.5 (dbg), 10.9.5 (opt), 10.10.3 (dbg), 10.10.3 (opt), 10.11.2 (opt), 10.11.2 (dbg), 11.0.1 (dbg), 11.0.1 (opt)
          MySQL: 5.7.40 (dbg), 5.7.40 (opt)

          Bug (or feature/syntax) confirmed not present in:
          MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.51 (dbg), 5.6.51 (opt), 8.0.31 (dbg), 8.0.31 (opt)
          Interestingly, the issue is present in MySQL 5.7 and 8.0 as well, but only in those releases.
          {code}
          SET GLOBAL innodb_buffer_pool_filename='';
          SHUTDOWN;
          {code}
          Leads to:
          {noformat:title=11.0.1 b075191ba8598af6aff5549e6e19f6255aef258a (Optimized)}
          2023-01-24 15:30:26 0 [Note] InnoDB: FTS optimize thread exiting.
          2023-01-24 15:30:26 0 [Note] InnoDB: Starting shutdown...
          2023-01-24 15:30:26 0 [Note] InnoDB: Dumping buffer pool(s) to /test/MD090123-mariadb-11.0.1-linux-x86_64-opt/data
          2023-01-24 15:30:26 0 [ERROR] InnoDB: Cannot delete '/test/MD090123-mariadb-11.0.1-linux-x86_64-opt/data': Is a directory
          {noformat}

          Bug confirmed present in:
          MariaDB: 10.3.38 (dbg), 10.3.38 (opt), 10.4.28 (dbg), 10.4.28 (opt), 10.5.19 (dbg), 10.5.19 (opt), 10.6.12 (dbg), 10.6.12 (opt), 10.7.8 (dbg), 10.7.8 (opt), 10.8.7 (dbg), 10.8.7 (opt), 10.9.5 (dbg), 10.9.5 (opt), 10.10.3 (dbg), 10.10.3 (opt), 10.11.2 (opt), 10.11.2 (dbg), 11.0.1 (dbg), 11.0.1 (opt)
          MySQL: 5.7.40 (dbg), 5.7.40 (opt), 8.0.31 (dbg), 8.0.31 (opt)

          Bug (or feature/syntax) confirmed not present in:
          MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.51 (dbg), 5.6.51 (opt)
          Roel Roel Van de Paar made changes -
          Labels upstream-5.7 upstream-5.7 upstream-8.0
          Roel Roel Van de Paar made changes -
          Status Needs Feedback [ 10501 ] Open [ 1 ]
          Roel Roel Van de Paar made changes -
          Status Open [ 1 ] Confirmed [ 10101 ]
          Roel Roel Van de Paar made changes -
          Assignee Roel Van de Paar [ roel ] Marko Mäkelä [ marko ]
          serg Sergei Golubchik made changes -
          Priority Major [ 3 ] Critical [ 2 ]
          julien.fritsch Julien Fritsch made changes -
          Fix Version/s 10.7 [ 24805 ]

          I addressed this by making the variable innodb_buffer_pool_filename read-only. An adventurous user might still specify innodb_buffer_pool_filename=ibdata1 or something in the server configuration, but short of removing the parameter (which could break compatibility) I do not think we can do much against that.

          marko Marko Mäkelä added a comment - I addressed this by making the variable innodb_buffer_pool_filename read-only. An adventurous user might still specify innodb_buffer_pool_filename=ibdata1 or something in the server configuration, but short of removing the parameter (which could break compatibility) I do not think we can do much against that.
          marko Marko Mäkelä made changes -
          issue.field.resolutiondate 2023-03-29 14:43:43.0 2023-03-29 14:43:43.771
          marko Marko Mäkelä made changes -
          Fix Version/s 10.4.29 [ 28510 ]
          Fix Version/s 10.5.20 [ 28512 ]
          Fix Version/s 10.6.13 [ 28514 ]
          Fix Version/s 10.8.8 [ 28518 ]
          Fix Version/s 10.9.6 [ 28520 ]
          Fix Version/s 10.10.4 [ 28522 ]
          Fix Version/s 10.11.3 [ 28524 ]
          Fix Version/s 11.1.1 [ 28704 ]
          Fix Version/s 11.0.2 [ 28706 ]
          Fix Version/s 10.3 [ 22126 ]
          Fix Version/s 10.4 [ 22408 ]
          Fix Version/s 10.5 [ 23123 ]
          Fix Version/s 10.6 [ 24028 ]
          Fix Version/s 10.8 [ 26121 ]
          Fix Version/s 10.9 [ 26905 ]
          Fix Version/s 10.10 [ 27530 ]
          Fix Version/s 10.11 [ 27614 ]
          Resolution Fixed [ 1 ]
          Status Confirmed [ 10101 ] Closed [ 6 ]
          ralf.gebhardt Ralf Gebhardt made changes -
          Description Interestingly, the issue is present in MySQL 5.7 and 8.0 as well, but only in those releases.
          {code}
          SET GLOBAL innodb_buffer_pool_filename='';
          SHUTDOWN;
          {code}
          Leads to:
          {noformat:title=11.0.1 b075191ba8598af6aff5549e6e19f6255aef258a (Optimized)}
          2023-01-24 15:30:26 0 [Note] InnoDB: FTS optimize thread exiting.
          2023-01-24 15:30:26 0 [Note] InnoDB: Starting shutdown...
          2023-01-24 15:30:26 0 [Note] InnoDB: Dumping buffer pool(s) to /test/MD090123-mariadb-11.0.1-linux-x86_64-opt/data
          2023-01-24 15:30:26 0 [ERROR] InnoDB: Cannot delete '/test/MD090123-mariadb-11.0.1-linux-x86_64-opt/data': Is a directory
          {noformat}

          Bug confirmed present in:
          MariaDB: 10.3.38 (dbg), 10.3.38 (opt), 10.4.28 (dbg), 10.4.28 (opt), 10.5.19 (dbg), 10.5.19 (opt), 10.6.12 (dbg), 10.6.12 (opt), 10.7.8 (dbg), 10.7.8 (opt), 10.8.7 (dbg), 10.8.7 (opt), 10.9.5 (dbg), 10.9.5 (opt), 10.10.3 (dbg), 10.10.3 (opt), 10.11.2 (opt), 10.11.2 (dbg), 11.0.1 (dbg), 11.0.1 (opt)
          MySQL: 5.7.40 (dbg), 5.7.40 (opt), 8.0.31 (dbg), 8.0.31 (opt)

          Bug (or feature/syntax) confirmed not present in:
          MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.51 (dbg), 5.6.51 (opt)
          Interestingly, the issue is present in MySQL 5.7 and 8.0 as well, but only in those releases.
          {code}
          SET GLOBAL innodb_buffer_pool_filename='';
          SHUTDOWN;
          {code}
          Leads to:
          {noformat:title=11.0.1 b075191ba8598af6aff5549e6e19f6255aef258a (Optimized)}
          2023-01-24 15:30:26 0 [Note] InnoDB: FTS optimize thread exiting.
          2023-01-24 15:30:26 0 [Note] InnoDB: Starting shutdown...
          2023-01-24 15:30:26 0 [Note] InnoDB: Dumping buffer pool(s) to /test/MD090123-mariadb-11.0.1-linux-x86_64-opt/data
          2023-01-24 15:30:26 0 [ERROR] InnoDB: Cannot delete '/test/MD090123-mariadb-11.0.1-linux-x86_64-opt/data': Is a directory
          {noformat}

          Bug confirmed present in:
          MariaDB: 10.3.38 (dbg), 10.3.38 (opt), 10.4.28 (dbg), 10.4.28 (opt), 10.5.19 (dbg), 10.5.19 (opt), 10.6.12 (dbg), 10.6.12 (opt), 10.7.8 (dbg), 10.7.8 (opt), 10.8.7 (dbg), 10.8.7 (opt), 10.9.5 (dbg), 10.9.5 (opt), 10.10.3 (dbg), 10.10.3 (opt), 10.11.2 (opt), 10.11.2 (dbg), 11.0.1 (dbg), 11.0.1 (opt)
          MySQL: 5.7.40 (dbg), 5.7.40 (opt), 8.0.31 (dbg), 8.0.31 (opt)

          Bug (or feature/syntax) confirmed not present in:
          MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.51 (dbg), 5.6.51 (opt)


          Interface change: innodb_buffer_pool_filename is now a read-only variable

          People

            marko Marko Mäkelä
            Roel Roel Van de Paar
            Votes:
            0 Vote for this issue
            Watchers:
            3 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.