1. 10 Mar, 2022 2 commits
  2. 09 Mar, 2022 3 commits
    • Daniel Black's avatar
      MDEV-27936 hardware lock elision on ppc64{,le} failing to compile · e8fc62b9
      Daniel Black authored
      There is only a very small range of gcc compiler versions
      that allow the built_{htm} functions to be defined without -mhtm
      being specified as a global C{,XX}FLAGS.
      
      Because the design is centered around enable HTM only in the
      functional blocks that use it, this breaks on the inclusion
      of the htmxlintrin.h header that includes this.
      
      As a partial mitigation, extented to GNU/clang compilers,
      transaction functions gain the attribute "hot".
      
      In general the use of htm is around the optimistic
      transaction ability of the function. The key part of using the
      hot attribute is to place these functions together so that
      a maximization of icache, tlb and OS paging can ensure that
      these can be ready to execute by any thread/cpu with the
      minimum amount of overhead.
      
      POWER is particularly affected here because the xbegin/xend
      functions are not inline.
      
      srw_lock.cc requires the -mhtm cflag, both in the storage
      engine and the unit tests.
      e8fc62b9
    • Otto Kekäläinen's avatar
      c61249ee
    • Otto Kekäläinen's avatar
      Fix failing Gitlab-CI by adding pcre2-devel as a build dependency · ffb7f885
      Otto Kekäläinen authored
      The commits a73acf6c and
      4d74bac8 updated the PCRE library to a new
      version, which in turn requires CMake 3.0. That does not exist in CentOS 7
      nor 8, so builds started failing.
      
      Actually the build should not be downloading anything at all. The root
      cause was that pcre2-devel was missing from the dependencies. This was
      originally not detected, as the download fallback had masked the issue.
      ffb7f885
  3. 08 Mar, 2022 3 commits
  4. 07 Mar, 2022 7 commits
    • Vlad Lesin's avatar
      Merge 10.5 into 10.6 · 202316a3
      Vlad Lesin authored
      202316a3
    • Vlad Lesin's avatar
      Merge 10.4 into 10.5 · 0b92c7b0
      Vlad Lesin authored
      0b92c7b0
    • Vlad Lesin's avatar
      Merge 10.3 into 10.4 · 1ec32057
      Vlad Lesin authored
      1ec32057
    • Vlad Lesin's avatar
      MDEV-27992 DELETE fails to delete record after blocking is released · 86c1bf11
      Vlad Lesin authored
      MDEV-27025 allows to insert records before the record on which DELETE is
      locked, as a result the DELETE misses those records, what causes serious ACID
      violation.
      
      Revert MDEV-27025, MDEV-27550. The test which shows the scenario of ACID
      violation is added.
      86c1bf11
    • Marko Mäkelä's avatar
      Merge 10.4 into 10.5 · 2dce3bad
      Marko Mäkelä authored
      2dce3bad
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · 7b97020d
      Marko Mäkelä authored
      7b97020d
    • Daniel Black's avatar
      MDEV-27891: SIGSEGV in InnoDB buffer pool resize · b6a24724
      Daniel Black authored
      During an increase in resize, the new curr_size got a value
      less than old_size.
      
      As n_chunks_new and n_chunks have a strong correlation to the
      resizing operation in progress, we can use them and remove the
      need for old_size.
      
      For convienece the n_chunks_new < n_chunks is now the is_shrinking
      function.
      
      The volatile compiler optimization on n_chunks{,_new} is removed
      as real mutex uses are needed.
      
      Other n_chunks_new/n_chunks methods:
      
      n_chunks_new and n_chunks almost always read and altered under
      the pool mutex.
      
      Exceptions are:
      * i_s_innodb_buffer_page_fill,
      * buf_pool_t::is_uncompressed (via is_blocked_field)
      These need reexamining for the need of a mutex, however comments
      indicates this already.
      
      get_n_pages has uses in buffer pool load, recover log memory
      exhaustion estimates and innodb status so take the minimum number
      of chunks for safety.
      
      The buf_pool_t::running_out function also uses curr_size/old_size.
      We replace this hot function calculation with just n_chunks_new.
      This is the new size of the chunks before the resizing occurs.
      
      If we are resizing down, we've already got the case we had previously
      (as the minimum). If we are resizing upwards, we are taking an
      optimistic view that there will be buffer chunks available for locks.
      As this memory allocation is occurring immediately next the resizing
      function it seems likely.
      
      Compiler hint UNIV_UNLIKELY removed to leave it to the branch
      predictor to make an informed decision.
      
      Added test case of a smaller size than the Marko/Roel original
      in JIRA reducing the size to 256M. SEGV hits roughly 1/10 times
      but its better than a 21G memory size.
      
      Reviewer: Marko
      b6a24724
  5. 04 Mar, 2022 3 commits
  6. 03 Mar, 2022 4 commits
  7. 01 Mar, 2022 11 commits
  8. 28 Feb, 2022 7 commits