1. 14 Feb, 2021 1 commit
    • Sergei Golubchik's avatar
      updating @@wsrep_cluster_address deadlocks · 26965387
      Sergei Golubchik authored
      wsrep_cluster_address_update() causes LOCK_wsrep_slave_threads
      to be locked under LOCK_wsrep_cluster_config, while normally
      the order should be the opposite.
      
      Fix: don't protect @@wsrep_cluster_address value with the
      LOCK_wsrep_cluster_config, LOCK_global_system_variables is enough.
      
      Only protect wsrep reinitialization with the LOCK_wsrep_cluster_config.
      And make it use a local copy of the global @@wsrep_cluster_address.
      
      Also, introduce a helper function that checks whether
      wsrep_cluster_address is set and also asserts that it can be safely
      read by the caller.
      26965387
  2. 12 Feb, 2021 7 commits
    • Sergei Golubchik's avatar
      fix a 3-way deadlock in galera_sr.galera-features#56 · b91e77cf
      Sergei Golubchik authored
      rarely (try --repeat 1000), the following happens:
      
      * from wsrep_bf_abort (when a thread is being killed), wsrep-lib
      starts streaming_rollback that wants to
      convert_streaming_client_to_applier. wsrep_create_streaming_applier
      creates a new THD(). All while the other THD is being killed,
      so under LOCK_thd_kill and LOCK_thd_data. In particular, THD::init()
      takes LOCK_global_system_variables under LOCK_thd_kill.
      
      * updating @@wsrep_slave_threads takes LOCK_global_system_variables
      and LOCK_wsrep_cluster_config (in that order) and invokes
      wsrep_slave_threads_update() that takes LOCK_wsrep_slave_threads
      
      * wsrep_replication_process() takes LOCK_wsrep_slave_threads and
      invokes wsrep_close_applier(), that does thd->set_killed() which
      takes LOCK_thd_kill.
      
      et voilà.
      
      As a fix I copied a workaround from wsrep_cluster_address_update()
      to wsrep_slave_threads_update(). It seems to be safe: without mutexes
      a race condition is possible and a concurrent SET might change
      wsrep_slave_threads, but wsrep_slave_threads_update() always verifies
      if there's a need to do something, so it will not run twice in this case,
      it'll be a no-op.
      b91e77cf
    • Sergei Golubchik's avatar
      remove find_thread_with_thd_data_lock_callback · 259b9452
      Sergei Golubchik authored
      let the caller take the lock if needed
      259b9452
    • Sergei Golubchik's avatar
      MDEV-23328 Server hang due to Galera lock conflict resolution · eac8341d
      Sergei Golubchik authored
      adaptation of 29bbcac0 for 10.4
      eac8341d
    • Sergei Golubchik's avatar
      don't take mutexes conditionally · 9703cffa
      Sergei Golubchik authored
      9703cffa
    • Sergei Golubchik's avatar
      cleanup: THD::abort_current_cond_wait() · 259a1902
      Sergei Golubchik authored
      * reuse the loop in THD::abort_current_cond_wait, don't duplicate it
      * find_thread_by_id should return whatever it has found, it's the
        caller's task not to kill COM_DAEMON (if the caller's a killer)
      
      and other minor changes
      259a1902
    • Elena Stepanova's avatar
      List of unstable tests for 10.4.18 release · cbbcc8fa
      Elena Stepanova authored
      Test code modifications and new failures from buildbot registered
      only for the main suite. The rest was updated partially,
      based on the status of existing JIRA items
      cbbcc8fa
    • Sergei Golubchik's avatar
      Merge branch 'bb-10.3-release' into bb-10.4-release · 00a313ec
      Sergei Golubchik authored
      Note, the fix for "MDEV-23328 Server hang due to Galera lock conflict resolution"
      was null-merged. 10.4 version of the fix is coming up separately
      00a313ec
  3. 07 Feb, 2021 1 commit
    • Sergei Golubchik's avatar
      MDEV-24274 ALTER TABLE with CHECK CONSTRAINTS gives "Out of Memory" error · ef5adf52
      Sergei Golubchik authored
      partially revert 76063c2a. Item::clone() is not an all-purpose
      Item copying machine, it was specifically created for pushdown
      of predicates into derived tables and views and it does not
      copy everything. In particular, it does not copy Item_func_regex.
      
      Fix the bug differently by preserving the old constraint name.
      But keep setting automatic_name=true to have it regenerated
      for cases like ALTER TABLE ... ADD CONSTRAINT.
      ef5adf52
  4. 06 Feb, 2021 1 commit
  5. 05 Feb, 2021 6 commits
  6. 02 Feb, 2021 5 commits
  7. 01 Feb, 2021 8 commits
  8. 30 Jan, 2021 1 commit
  9. 29 Jan, 2021 7 commits
  10. 28 Jan, 2021 3 commits