1. 14 Jan, 2021 1 commit
    • Jan Lindström's avatar
      MDEV-22285 : Assertion `xid_seqno > wsrep_seqno' failed in... · b87828b6
      Jan Lindström authored
      MDEV-22285 : Assertion `xid_seqno > wsrep_seqno' failed in trx_rseg_update_wsrep_checkpoint on SET @@global.wsrep_start_position
      
      Actual assertion mentioned on MDEV seems to be already fixed but
      setting seqno to -2 will trigger a different assertion
      
      mysqld: /home/jan/mysql/10.4-bugs/wsrep-lib/src/server_state.cpp:702: void wsrep::server_state::sst_received(wsrep::client_service&, int): Assertion `state_ == s_joiner || state_ == s_initialized' failed.
      
      Fixed this by not allowing user to set seqno < -1 (-1 is special
      seqno meaning undefined and seqno is initialized to it). MariaDB
      releases 10.2 and 10.3 already do not allow to set seqno < -1.
      b87828b6
  2. 13 Jan, 2021 2 commits
  3. 12 Jan, 2021 2 commits
  4. 11 Jan, 2021 2 commits
  5. 09 Jan, 2021 2 commits
  6. 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
  7. 07 Jan, 2021 4 commits
  8. 06 Jan, 2021 1 commit
  9. 05 Jan, 2021 3 commits
  10. 04 Jan, 2021 8 commits
  11. 02 Jan, 2021 3 commits
    • Marko Mäkelä's avatar
      MDEV-24512 Assertion failed in rec_is_metadata() in btr_discard_only_page_on_level() · d67e17bb
      Marko Mäkelä authored
      btr_discard_only_page_on_level(): Attempt to read the MDEV-15562 metadata
      record from the leaf page, not the root page. In the root, the leftmost
      (in this case, the only) node pointer would look like a metadata record.
      
      This corruption bug was introduced in
      commit 0e5a4ac2 (MDEV-15562).
      The scenario is rare: a column was dropped instantly or the order of
      columns was changed instantly, and then the table became empty in such
      a way that in the last step, the root page had one child page.
      Normally, a non-leaf B-tree page would always contain at least 2 children.
      d67e17bb
    • Marko Mäkelä's avatar
      MDEV-20386: Allow RDRAND, RDSEED WITH_MSAN · 734c587f
      Marko Mäkelä authored
      Let us use Intel intrinsic functions in WolfSSL whenever possible.
      This allows such code to be compiled WITH_MSAN.
      734c587f
    • Marko Mäkelä's avatar
      WolfSSL v4.6.0-stable · c1a7a82b
      Marko Mäkelä authored
      c1a7a82b
  12. 31 Dec, 2020 1 commit
  13. 29 Dec, 2020 2 commits
  14. 28 Dec, 2020 3 commits
    • Teemu Ollakka's avatar
      MDEV-24255 MTR test galera_bf_abort fails with --ps-protocol · 4601e6e5
      Teemu Ollakka authored
      Under ps-protocol, commandsl like COM_STMT_FETCH, COM_STMT_CLOSE and
      COM_STMT_SEND_LONG_DATA are not supposed to return errors. Therefore,
      if a transaction is BF aborted and the client is processing one of
      those commands, then we should not return a deadlock error
      immediately. Instead wait for the a subsequent client interaction
      which permits errors to be returned. To handle this,
      wsrep_before_command() now accepts parameter keep_command_error. If
      set true, keep_command_error will cause wsrep-lib side to skip result
      handling, and to keep the current error for the next interaction with
      the client.
      Reviewed-by: default avatarJan Lindström <jan.lindstrom@mariadb.com>
      4601e6e5
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · a64cb6d2
      Marko Mäkelä authored
      a64cb6d2
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · 7f037b8c
      Marko Mäkelä authored
      7f037b8c