1. 03 Aug, 2020 2 commits
    • Sachin's avatar
      MDEV-23089 rpl_parallel2 fails in 10.5 · e98be019
      Sachin authored
      Remove rpl_parallel2 from disabled.def
      e98be019
    • Sachin's avatar
      MDEV-23089 rpl_parallel2 fails in 10.5 · 6889c51e
      Sachin authored
      Problem:- rpl_parallel2 was failing non-deterministically
      Analysis:-
      When FLUSH TABLES WITH READ LOCK is executed, it will allow all worker
      threads to complete their ongoing transactions and then it will pause them.
      At this state FTWRL will proceed to acquire global read lock. FTWRL first
      blocks threads from starting new commits, then upgrades the lock to block
      commit of existing transactions.
        Step1:
          FLUSH TABLES WITH READ LOCK - Blocks new commits
        Step2:
          * STOP SLAVE command enables 'force_abort=1' which unblocks workers,
            they continue to execute events.
          * T1: Waits in 'record_gtid' call to update 'gtid_slave_pos' table with
            its current GTID, but it is blocked becuase of Step1.
          * T2: Holds COMMIT lock and waits for T1 to commit.
        Step3:
          FLUSH TABLES WITH READ LOCK - Waiting to get BLOCK_COMMIT.
      This results in deadlock. When STOP SLAVE command allows paused workers to
      proceed, workers should skip the execution of all further events, similar
      to 'conservative' parallel mode.
      Solution:-
      We will assign 1 to skip_event_group when we are aborted in do_ftwrl_wait.
      rpl_parallel_entry->pause_sub_id is only reset when force_abort is off in
      rpl_pause_after_ftwrl.
      6889c51e
  2. 08 Jul, 2020 2 commits
  3. 07 Jul, 2020 1 commit
  4. 06 Jul, 2020 2 commits
  5. 05 Jul, 2020 2 commits
    • Marko Mäkelä's avatar
      Fix cmake -DWITH_MSAN=ON · 79c166c5
      Marko Mäkelä authored
      commit ab406990 accidentally
      misplaced #endif directives.
      79c166c5
    • Marko Mäkelä's avatar
      After-merge fix for ASAN and MSAN · ab406990
      Marko Mäkelä authored
      The merge commit 0fd89a1a
      of commit b6ec1e8b
      seems to cause occasional MemorySanitizer failures,
      because it failed to replace some MEM_UNDEFINED() calls
      with MEM_MAKE_ADDRESSABLE().
      
      my_large_free(): Correctly invoke MEM_MAKE_ADDRESSABLE() after
      freeing memory. Failure to do so could cause bogus
      AddressSanitizer failures for memory allocated by my_large_malloc().
      On MemorySanitizer, we will do nothing.
      
      buf_pool_t::chunk_t::create(): Replace the MEM_MAKE_ADDRESSABLE()
      that had been added in commit 48493132
      to work around the issue.
      ab406990
  6. 04 Jul, 2020 5 commits
    • Marko Mäkelä's avatar
      Merge 10.4 into 10.5 · 90d5d906
      Marko Mäkelä authored
      90d5d906
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · b99fa1e7
      Marko Mäkelä authored
      b99fa1e7
    • Marko Mäkelä's avatar
      Fixup the parent commit for MSAN and Valgrind · 453dc4b3
      Marko Mäkelä authored
      commit 48493132 was a necessary
      fix for the buffer pool resizing tests in 10.5 in
      AddressSanitizer. However, that change would break the tests
      innodb.innodb_buffer_pool_resize and
      innodb.innodb_buffer_pool_resize_with_chunks
      when run in MemorySanitizer, or presumably in Valgrind as well.
      (Those tests run "forever" in Valgrind.)
      
      buf_pool_resize(): Cancel the effect of MEM_NOACCESS() in Valgrind
      and ASAN. In MSAN, MEM_NOACCESS() is a no-op, and hence we must do
      nothing special here.
      
      MEM_MAKE_ADDRESSABLE() would declare the memory contents undefined.
      In this particular case, we must actually declare the contents
      defined for Valgrind.
      453dc4b3
    • Marko Mäkelä's avatar
      MDEV-22535 fixup: Define a single-caller function inline · a85f81af
      Marko Mäkelä authored
      Let us avoid any overhead in release builds, for an empty function.
      a85f81af
    • Marko Mäkelä's avatar
      After-merge fixes for ASAN · 2d00e003
      Marko Mäkelä authored
      The merge commit 0fd89a1a
      of commit b6ec1e8b
      was slightly incomplete.
      
      ReadView::mem_valid(): Use the correct primitive
      MEM_MAKE_ADDRESSABLE(), because MEM_UNDEFINED() now has
      no effect on ASAN.
      
      recv_sys_t::alloc(), recv_sys_t::add(): Use MEM_MAKE_ADDRESSABLE()
      instead of MEM_UNDEFINED(), to get the correct behaviour for ASAN.
      For Valgrind and MSAN, there is no change in behaviour.
      
      recv_sys_t::free(), recv_sys_t::clear(): Before freeing memory to
      buf_pool.free_list, invoke MEM_MAKE_ADDRESSABLE() on the entire
      buf_block_t::frame, to cancel the effect of MEM_NOACCESS() in
      recv_sys_t::alloc().
      2d00e003
  7. 03 Jul, 2020 20 commits
  8. 02 Jul, 2020 6 commits