• unknown's avatar
    MDEV-5363: Make parallel replication waits killable · dbfe5f47
    unknown authored
    Add a test case for killing a waiting query in parallel replication.
    
    Fix several bugs found:
    
     - We should not wakeup_subsequent_commits() in ha_rollback_trans(), since we
       do not know the right wakeup_error() to give.
    
     - When a wait_for_prior_commit() is killed, we must unregister from the
       waitee so we do not race and get an extra (non-kill) wakeup.
    
     - We need to deal with error propagation correctly in queue_for_group_commit
       when one thread is killed.
    
     - Fix one locking issue in queue_for_group_commit(), we could unlock the
       waitee lock too early and this end up processing wakeup() with insufficient
       locking.
    
     - Fix Xid_log_event::do_apply_event; if commit fails it must not update the
       in-memory @@gtid_slave_pos state.
    
     - Fix and cleanup some things in the rpl_parallel.cc error handling.
    
     - Add a missing check for killed in the slave sql driver thread, to avoid a
       race.
    dbfe5f47
sql_class.cc 172 KB