Hi, Jan! On Oct 04, Jan Lindström wrote: > Hi Sergei, > > > +/* This is wrapper for wsrep_break_lock in thr_lock.c */ > > > +static int wsrep_thr_abort_thd(void *bf_thd_ptr, void *victim_thd_ptr, > > > my_bool signal) > > > +{ > > > + THD* victim_thd= (THD *) victim_thd_ptr; > > > + /* We need to lock THD::LOCK_thd_data to protect victim > > > + from concurrent usage or disconnect or delete. */ > > > > How do you know victim_thd wasn't deleted before you locked > > LOCK_thd_data below? > > I must say the thr_lock code is not familiar to me but there are > mysql_mutex_lock() calls to lock->mutex. After code review it is not > clear to me what that mutex is.
where are mysql_mutex_lock() calls to lock->mutex? > > > if (victim_trx) { > > > + wsrep_thd_UNLOCK(victim_thd); > > > > what keeps victim_trx from disappearing here? > > Nothing. Do you have suggestions ? A couple of thoughts: * Why do you unlock LOCK_thd_data here at all? I believed the whole point of using TOI was to make sure that even if you lock mutexes in a different order, it will not cause a deadlock. * You cannot pass a THD safely over a gap where no locks keep it in existence. You can pass an integer, thread id, and use find_thread_by_id later. By the way, how long can WSREP_TO_ISOLATION_BEGIN() take? Does it need to wait for everything else being replicated? Regards, Sergei VP of MariaDB Server Engineering and secur...@mariadb.org _______________________________________________ Mailing list: https://launchpad.net/~maria-developers Post to : maria-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp