hi Kistian,

I afraid there are two palces need adjusted in rpl_parallel.cc

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

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().

2014-03-04



nanyi607rao
_______________________________________________
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