"nanyi607rao" <[email protected]> writes:

> First is in rpl_parallel_thread::get_rgi()
> adjusted like this
> ...
>   else
>   {
>     if(!(rgi= new rpl_group_info(rli)))
>     {
>       my_error(ER_OUTOFMEMORY, MYF(0), (int)sizeof(*rgi));
>       return NULL;
>     }
>     rgi->is_parallel_exec = true;
> -    if ((rgi->deferred_events_collecting= rli->mi->rpl_filter->is_on()))
> _      rgi->deferred_events= new Deferred_log_events(rli);
>   }
> +    if ((rgi->deferred_events_collecting= rli->mi->rpl_filter->is_on()))
> +      rgi->deferred_events= new Deferred_log_events(rli);
>
> because rgi->deferred_events was freed in rpl_parallel_thread::free_rgi() if 
> it wasn't NULL

Agree. I've pushed a fix for this to 10.0. (I hope I got it right, those
deferred_events always make me uncomfortable).


> Second is in  rpl_parallel_change_thread_count()
>
> I think it need add mysql_cond_broadcast(&pool->COND_rpl_thread_pool) after 
> all new threads are ok, this is for
> the case that skip_slave_start=OFF,then SQL thread would start automaticlly, 
> it could wait forever in rpl_parallel_thread_pool::get_thread(), because SQL 
> thread may reach this function before another thread reach the 
> rpl_parallel_change_thread_count().

Also pushed to 10.0.

Thanks a lot for reporting these problems!

 - Kristian.

_______________________________________________
Mailing list: https://launchpad.net/~maria-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to