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

MariaDB 10.x.y does not include fix for upstream bug #68079

    Details

      Description

      Upstream bug https://bugs.mysql.com/bug.php?id=68079 is fixed since 5.6.16. To fix it new CMake option was introduced, INNODB_PAGE_ATOMIC_REF_COUNT.

      This option is visible in the code (MariaDB 10.1, cloned today):

      [openxs@centos server]$ git branch
      * 10.1
      [openxs@centos server]$ grep -rni INNODB_PAGE_ATOMIC_REF_COUNT *
      storage/innobase/include/buf0types.h:29:#if defined(INNODB_PAGE_ATOMIC_REF_COUNT) && defined(HAVE_ATOMIC_BUILTINS)
      storage/innobase/include/buf0types.h:31:#endif /* INNODB_PAGE_ATOMIC_REF_COUNT && HAVE_ATOMIC_BUILTINS */
      storage/xtradb/include/buf0types.h:29:#if defined(INNODB_PAGE_ATOMIC_REF_COUNT) && defined(HAVE_ATOMIC_BUILTINS)
      storage/xtradb/include/buf0types.h:31:#endif /* INNODB_PAGE_ATOMIC_REF_COUNT && HAVE_ATOMIC_BUILTINS */
      [openxs@centos server]$
      

      But, as you can see, it is not mentioned in CMakeLists.txt and (probably for this reason) is not used. In the error logs of 10.0.23 we see:

      160721 14:22:06 [Note] /home/openxs/10.0.23/bin/mysqld (mysqld 10.0.23-MariaDB-log) starting as process 2418 ...
      160721 14:22:06 [Note] InnoDB: Using mutexes to ref count buffer pool pages
      

      even though this version already uses InnoDB 5.6.26. For comparison, Percona Server 5.6.28 starts like this:

       
      ...
      2016-02-24 18:25:37 1814 [Note] InnoDB: Using atomics to ref count buffer pool p
      ages
      2016-02-24 18:25:37 1814 [Note] InnoDB: The InnoDB memory heap is disabled
      2016-02-24 18:25:37 1814 [Note] InnoDB: Mutexes and rw_locks use GCC atomic buil
      tins
      2016-02-24 18:25:37 1814 [Note] InnoDB: Memory barrier is not used
      2016-02-24 18:25:37 1814 [Note] InnoDB: Compressed tables use zlib 1.2.3
      2016-02-24 18:25:37 1814 [Note] InnoDB: Using Linux native AIO
      2016-02-24 18:25:37 1814 [Note] InnoDB: Not using CPU crc32 instructions
      2016-02-24 18:25:37 1814 [Note] InnoDB: Initializing buffer pool, size = 5.0M
      2016-02-24 18:25:37 1814 [Note] InnoDB: Completed initialization of buffer pool
      2016-02-24 18:25:37 1814 [Note] InnoDB: Highest supported file format is Barracu
      da.
      2016-02-24 18:25:38 1814 [Note] InnoDB: 128 rollback segment(s) are active.
      2016-02-24 18:25:38 1814 [Note] InnoDB: Waiting for purge to start
      2016-02-24 18:25:39 1814 [Note] InnoDB: Percona XtraDB (http://www.percona.com)
      5.6.28-76.1 started; log sequence number 1017098584
      ...
      

      In the code of current upstream MySQL 5.6 we see:

      [openxs@centos mysql-server]$ grep -rni INNODB_PAGE_ATOMIC_REF_COUNT *
      CMakeLists.txt:332:OPTION(INNODB_PAGE_ATOMIC_REF_COUNT "Use atomics for the page reference count"
      CMakeLists.txt:334:MARK_AS_ADVANCED(INNODB_PAGE_ATOMIC_REF_COUNT)
      config.h.cmake:552:#cmakedefine INNODB_PAGE_ATOMIC_REF_COUNT
      storage/innobase/include/buf0types.h:29:#if defined(INNODB_PAGE_ATOMIC_REF_COUNT) && defined(HAVE_ATOMIC_BUILTINS)
      storage/innobase/include/buf0types.h:31:#endif /* INNODB_PAGE_ATOMIC_REF_COUNT && HAVE_ATOMIC_BUILTINS */
      [openxs@centos mysql-server]$ git branch
      * 5.6
        5.7
      

      I know there were problems with this option on Windows long time ago, but is it a good reason to NOT use it and related InnoDB scalability improvements?

        Attachments

          Activity

            People

            • Assignee:
              svoj Sergey Vojtovich
              Reporter:
              valerii Valerii Kravchuk
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: