1. 02 Oct, 2021 3 commits
  2. 30 Sep, 2021 5 commits
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · a49e3943
      Marko Mäkelä authored
      a49e3943
    • Marko Mäkelä's avatar
      MDEV-25215 Excessive logging "InnoDB: Cannot close file" · be803f03
      Marko Mäkelä authored
      In commit 45ed9dd9 (MDEV-23855)
      when removing fil_system.LRU we failed to rate-limit the output
      for reporting violations of innodb_open_files or open_files_limit.
      
      If the server is run with a small limit of open files that is
      well below the number of .ibd files that are being accessed by
      the workload, and if at the same time innodb_log_file_size is
      very small so that log checkpoints will occur frequently,
      the process of enforcing the open files limit may be run very often.
      
      fil_space_t::try_to_close(): Display at most one message per call,
      and only if at least 5 seconds have elapsed since the last time a
      message was output.
      
      fil_node_open_file(): Only output a summary message if
      fil_space_t::try_to_close() displayed a message during this run.
      (Note: multiple threads may execute fil_node_open_file() on
      different files at the same time.)
      
      fil_space_t::get(): Do not dereference a null pointer if n & STOPPING.
      This was caught by the test case below.
      
      Unfortunately, it is not possible to create a fully deterministic
      test case (expecting exactly 1 message to be emitted). The following with
      --innodb-open-files=10 --innodb-log-file-size=4m
      would occasionally fail to find the message in the log:
      
      --source include/have_innodb.inc
      --source include/have_partition.inc
      --source include/have_sequence.inc
      
      call mtr.add_suppression("InnoDB: innodb_open_files=10 is exceeded");
      
      CREATE TABLE t1 (pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB
      PARTITION BY key (pk) PARTITIONS 100;
      
      INSERT INTO t1 SELECT * FROM seq_1_to_100;
      --disable_query_log
      let $n=400;
      while ($n)
      {
      BEGIN; DELETE FROM t1; ROLLBACK;
      dec $n;
      }
      --enable_query_log
      
      let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
      let SEARCH_PATTERN= \[Note\] InnoDB: Cannot close file;
      -- source include/search_pattern_in_file.inc
      
      DROP TABLE t1;
      be803f03
    • Marko Mäkelä's avatar
      Merge 10.4 into 10.5 · 064cb58e
      Marko Mäkelä authored
      FIXME: Part of the MDEV-20699 test is disabled due to
      nonderterministic result.
      064cb58e
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · 57fdd016
      Marko Mäkelä authored
      57fdd016
    • Otto Kekäläinen's avatar
      Misc improvements to the Gitlab-CI pipeline for MariaDB · 260649de
      Otto Kekäläinen authored
      - Add new Ninja and Clang build jobs. This helps to ensure those
        toolchains also work in addition to default CMake/gcc.
      
      - Generate dependencies.dot/png to illustrate the CMake/Make/Ninja
        build dependencies. Viewing this image and identifying bottle necks
        in parallelism can help make the build run faster.
      
      - Enable CUnit tests now as they are fixed on 10.6 (MDEV-25820).
      
      - Limit parallel builds to 2 CPUs (full parallelism needs MDEV-25968) on
        CMake/Make. Now only the Ninja builds run full parallel builds as only
        Ninja is smart enough to prevent builds failing on resource
        over-consumption.
      
      - Enable Gitlab-CI cache for job 'centos8' for ccache so that it builds
        faster. Don't use Gitlab-CI cache for other jobs, as it would too easily
        use up all free tier storage on Gitlab.com and force users to get a paid
        account just for MariaDB builds.
      
      - On other jobs clean away ccache, as it only had a 5% hit rate on single
        builds with no downloaded cache.
      
      - Dump full database contents during the test install so that one can
        use diff to compare the database contents at different stages and thus
        track/debug potential bugs in mariadb-install-db and mariadb-upgrade
        code.
      
      Bugfixes:
      
      - Zero out ccache stats before each run so that 'ccache -s' would actually
        show the stats for the latest run.
      260649de
  3. 29 Sep, 2021 8 commits
  4. 28 Sep, 2021 5 commits
    • Vladislav Vaintroub's avatar
      MDEV-23306 Fix build dependency · e5a9dcfd
      Vladislav Vaintroub authored
      e5a9dcfd
    • Vicențiu Ciorbaru's avatar
      MTR: loops should divide milliseconds by milliseconds · 27738bd7
      Vicențiu Ciorbaru authored
      timeout is in seconds, sleeptime is in miliseconds. Otherwise we sleep
      for 10 times longer than the timeout.
      27738bd7
    • Marko Mäkelä's avatar
      MDEV-26467: Actually use spinloop on block_lock · e79fa9f5
      Marko Mäkelä authored
      In commit 277ba134
      we accidentally omitted this.
      e79fa9f5
    • Marko Mäkelä's avatar
      MDEV-26467: Universally implement spin loop · d0d4ade9
      Marko Mäkelä authored
      Previously, neither our wrapper of Microsoft Windows SRWLOCK
      nor the futex-less implementation SUX_LOCK_GENERIC supported spin loops.
      
      This was suggested by Vladislav Vaintroub.
      d0d4ade9
    • Marko Mäkelä's avatar
      MDEV-26467: More cache friendliness · 35f59bc4
      Marko Mäkelä authored
      srw_mutex_impl<bool>::wait_and_lock(): In
      commit a73eedbf we introduced
      an std::atomic::fetch_or() in a loop. Alas, on the IA-32 and AMD64,
      that was being translated into a loop around LOCK CMPXCHG.
      To avoid a nested loop, it is better to explicitly invoke
      std::atomic::compare_exchange_weak() in the loop, but only if
      the attempt has a chance to succeed (the HOLDER flag is not set).
      
      It is even more efficient to use LOCK BTS, but contemporary compilers
      fail to translate std::atomic::fetch_or(x) & x into that when x is
      a single-bit constant. On GCC-compatible compilers, we will use
      inline assembler to achieve that.
      
      On other ISA than IA-32 and AMD64, we will continue to use
      std::atomic::fetch_or().
      
      ssux_lock_impl<spinloop>::rd_wait(): Use rd_lock_try().
      A loop around std::atomic::compare_exchange_weak() should be
      cheaper than fetch_add(), fetch_sub() and a wakeup system call.
      
      These deficiencies were pointed out and the use of LOCK BTS was
      suggested by Thiago Macieira.
      35f59bc4
  5. 27 Sep, 2021 7 commits
  6. 24 Sep, 2021 12 commits