maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #06949
Re: two places maybe need adjusted in rpl_parallel.cc
"nanyi607rao" <nanyi607rao@xxxxxxxxx> 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.
References