1. 19 Oct, 2016 6 commits
  2. 17 Oct, 2016 6 commits
    • Sergey Vojtovich's avatar
      MDEV-7148 - Recurring: InnoDB: Failing assertion: !lock->recursive · 8303aded
      Sergey Vojtovich authored
      On PPC64 high-loaded server may crash due to assertion failure in InnoDB
      rwlocks code.
      
      This happened because load order between "recursive" and "writer_thread"
      wasn't properly enforced.
      8303aded
    • Sergey Vojtovich's avatar
      MDEV-10813 - Clean-up InnoDB atomics, memory barriers and mutexes · 2b47f8ff
      Sergey Vojtovich authored
      Clean-up periodic mutex/rwlock waiters wake up. This was a hack needed to
      workaround broken mutexes/rwlocks implementation. We must have sane
      implementations now and don't need these anymore: release thread is
      guaranteed to wake up waiters.
      
      Removed redundant ifdef that has equivalent code in both branches.
      
      Removed os0atomic.h and os0atomic.ic: not used anymore.
      
      Clean-up unused cmake checks.
      2b47f8ff
    • Sergey Vojtovich's avatar
      MDEV-10813 - Clean-up InnoDB atomics, memory barriers and mutexes · 5608a737
      Sergey Vojtovich authored
      No point to issue RELEASE memory barrier in os_thread_create_func(): thread
      creation is full memory barrier.
      
      No point to issue os_wmb in rw_lock_set_waiter_flag() and
      rw_lock_reset_waiter_flag(): this is deadcode and it is unlikely operational
      anyway. If atomic builtins are unavailable - memory barriers are most certainly
      unavailable too.
      
      RELEASE memory barrier is definitely abused in buf_pool_withdraw_blocks(): most
      probably it was supposed to commit volatile variable update, which is not what
      memory barriers actually do. To operate properly it needs corresponding ACQUIRE
      barrier without an associated atomic operation anyway.
      
      ACQUIRE memory barrier is definitely abused in log_write_up_to(): most probably
      it was supposed to synchronize dirty read of log_sys->write_lsn. To operate
      properly it needs corresponding RELEASE barrier without an associated atomic
      operation anyway.
      
      Removed a bunch of ACQUIRE memory barriers from InnoDB rwlocks. They're
      meaningless without corresponding RELEASE memory barriers.
      
      Valid usage example of memory barriers without an associated atomic operation:
      http://en.cppreference.com/w/cpp/atomic/atomic_thread_fence
      5608a737
    • Sergey Vojtovich's avatar
      MDEV-10813 - Clean-up InnoDB atomics, memory barriers and mutexes · f4d885c4
      Sergey Vojtovich authored
      Replaced InnoDB atomic operations with server atomic operations.
      
      Moved INNODB_RW_LOCKS_USE_ATOMICS - it is always defined (code won't compile
      otherwise).
      
      NOTE: InnoDB uses thread identifiers as a target for atomic operations.
      Thread identifiers should be considered opaque: any attempt to use a
      thread ID other than in pthreads calls is nonportable and can lead to
      unspecified results.
      f4d885c4
    • Sergey Vojtovich's avatar
      MDEV-10813 - Clean-up InnoDB atomics, memory barriers and mutexes · d055e28f
      Sergey Vojtovich authored
      Simplified InnoDB mutex implementations, corrected memory barriers usage, use
      server atomic builtins.
      d055e28f
    • Kristian Nielsen's avatar
      Move InnoDB/XtraDB to async deadlock kill for parallel replication. · cc49f009
      Kristian Nielsen authored
      In 10.2, use the thd_rpl_deadlock_check() API. This way, all the
      locking hacks around thd_report_wait_for() can be removed. Now
      parallel replication deadlock kill happens asynchroneously, from the
      slave background thread.
      
      In InnoDB, remove also the buffering of wait reports, to simplify the
      code, as this is no longer needed when the locking issues are gone.
      
      In XtraDB, the buffering is kept for now. This is just because
      presumably XtraDB will eventually be updated to MySQL 5.7-based InnoDB
      as well, so there is little need to modify the existing code only for
      clean-up purposes.
      
      The old synchronous function thd_report_wait_for() is no longer used
      and removed in this patch.
      Signed-off-by: default avatarKristian Nielsen <knielsen@knielsen-hq.org>
      cc49f009
  3. 16 Oct, 2016 2 commits
  4. 15 Oct, 2016 1 commit
  5. 14 Oct, 2016 9 commits
  6. 13 Oct, 2016 1 commit
  7. 10 Oct, 2016 1 commit
  8. 09 Oct, 2016 2 commits
  9. 08 Oct, 2016 6 commits
  10. 07 Oct, 2016 6 commits