1. 12 Jan, 2021 6 commits
  2. 11 Jan, 2021 3 commits
  3. 10 Jan, 2021 1 commit
  4. 09 Jan, 2021 3 commits
  5. 08 Jan, 2021 6 commits
    • Jan Lindström's avatar
      MDEV-23536 : Race condition between KILL and transaction commit · 775fccea
      Jan Lindström authored
      A race condition may occur between the execution of transaction commit,
      and an execution of a KILL statement that would attempt to abort that
      transaction.
      
      MDEV-17092 worked around this race condition by modifying InnoDB code.
      After that issue was closed, Sergey Vojtovich pointed out that this
      race condition would better be fixed above the storage engine layer:
      
      If you look carefully into the above, you can conclude that
      thd->free_connection() can be called concurrently with
      KILL/thd->awake(). Which is the bug. And it is partially fixed in
      THD::~THD(), that is destructor waits for KILL completion:
      
      Fix: Add necessary mutex operations to THD::free_connection()
      and move WSREP specific code also there. This ensures that no
      one is using THD while we do free_connection(). These mutexes
      will also ensures that there can't be concurrent KILL/THD::awake().
      
      innobase_kill_query
        We can now remove usage of trx_sys_mutex introduced on MDEV-17092.
      
      trx_t::free()
        Poison trx->state and trx->mysql_thd
      
      This patch is validated with an RQG run similar to the one that
      reproduced MDEV-17092.
      775fccea
    • Marko Mäkelä's avatar
      18254c18
    • Nikita Malyavin's avatar
      fixup MDEV-17556: fix mroonga · 61a362c9
      Nikita Malyavin authored
      61a362c9
    • Jan Lindström's avatar
      Update wsrep-lib · 26d913a7
      Jan Lindström authored
      26d913a7
    • Marko Mäkelä's avatar
      cd1e5d65
    • Nikita Malyavin's avatar
      MDEV-17556 Assertion `bitmap_is_set_all(&table->s->all_set)' failed · e25623e7
      Nikita Malyavin authored
      The assertion failed in handler::ha_reset upon SELECT under
      READ UNCOMMITTED from table with index on virtual column.
      
      This was the debug-only failure, though the problem is mush wider:
      * MY_BITMAP is a structure containing my_bitmap_map, the latter is a raw
       bitmap.
      * read_set, write_set and vcol_set of TABLE are the pointers to MY_BITMAP
      * The rest of MY_BITMAPs are stored in TABLE and TABLE_SHARE
      * The pointers to the stored MY_BITMAPs, like orig_read_set etc, and
       sometimes all_set and tmp_set, are assigned to the pointers.
      * Sometimes tmp_use_all_columns is used to substitute the raw bitmap
       directly with all_set.bitmap
      * Sometimes even bitmaps are directly modified, like in
      TABLE::update_virtual_field(): bitmap_clear_all(&tmp_set) is called.
      
      The last three bullets in the list, when used together (which is mostly
      always) make the program flow cumbersome and impossible to follow,
      notwithstanding the errors they cause, like this MDEV-17556, where tmp_set
      pointer was assigned to read_set, write_set and vcol_set, then its bitmap
      was substituted with all_set.bitmap by dbug_tmp_use_all_columns() call,
      and then bitmap_clear_all(&tmp_set) was applied to all this.
      
      To untangle this knot, the rule should be applied:
      * Never substitute bitmaps! This patch is about this.
       orig_*, all_set bitmaps are never substituted already.
      
      This patch changes the following function prototypes:
      * tmp_use_all_columns, dbug_tmp_use_all_columns
       to accept MY_BITMAP** and to return MY_BITMAP * instead of my_bitmap_map*
      * tmp_restore_column_map, dbug_tmp_restore_column_maps to accept
       MY_BITMAP* instead of my_bitmap_map*
      
      These functions now will substitute read_set/write_set/vcol_set directly,
      and won't touch underlying bitmaps.
      e25623e7
  6. 07 Jan, 2021 5 commits
  7. 06 Jan, 2021 3 commits
    • Andrei Elkin's avatar
      MDEV-19442 add-on · f319c426
      Andrei Elkin authored
      fixing windows build.
      f319c426
    • Marko Mäkelä's avatar
      MDEV-24537 innodb_max_dirty_pages_pct_lwm=0 lost its special meaning · a9933105
      Marko Mäkelä authored
      In commit 3a9a3be1 (MDEV-23855)
      some previous logic was replaced with the condition
      dirty_pct < srv_max_dirty_pages_pct_lwm, which caused
      the default value of the parameter innodb_max_dirty_pages_pct_lwm=0
      to lose its special meaning: 'refer to innodb_max_dirty_pages_pct instead'.
      
      This implicit special meaning was visible in the function
      af_get_pct_for_dirty(), which was removed in
      commit f0c295e2 (MDEV-24369).
      
      page_cleaner_flush_pages_recommendation(): Restore the special
      meaning that was removed in MDEV-24369.
      
      buf_flush_page_cleaner(): If srv_max_dirty_pages_pct_lwm==0.0,
      refer to srv_max_buf_pool_modified_pct. This fixes the observed
      performance regression due to excessive page flushing.
      
      buf_pool_t::page_cleaner_wakeup(): Revise the wakeup condition.
      
      innodb_init(): Do initialize srv_max_io_capacity in Mariabackup.
      It was previously constantly 0, which caused mariadb-backup --prepare
      to hang in buf_flush_sync(), making no progress.
      a9933105
    • Oleksandr Byelkin's avatar
      Merge commit '10.4' into 10.5 · 02e7bff8
      Oleksandr Byelkin authored
      02e7bff8
  8. 05 Jan, 2021 4 commits
  9. 04 Jan, 2021 8 commits
  10. 03 Jan, 2021 1 commit