[Commits] Rev 4077: MDEV-5825: Assertion `! is_set() || m_can_overwrite_status' fails in Diagnostics_area::set_error_status on executing rpl.rpl_parallel test in http://bazaar.launchpad.net/~maria-captains/maria/10.0

knielsen at knielsen-hq.org knielsen at knielsen-hq.org
Mon Mar 24 12:22:17 EET 2014


At http://bazaar.launchpad.net/~maria-captains/maria/10.0

------------------------------------------------------------
revno: 4077
revision-id: knielsen at knielsen-hq.org-20140324102216-3wizghex4u3yede4
parent: knielsen at knielsen-hq.org-20140321123055-8ch69qymsj1xqmw4
committer: knielsen at knielsen-hq.org
branch nick: tmp-10.0
timestamp: Mon 2014-03-24 11:22:16 +0100
message:
  MDEV-5825: Assertion `! is_set() || m_can_overwrite_status' fails in Diagnostics_area::set_error_status on executing rpl.rpl_parallel test
  
  In parallel replication, there was an error case where we could call
  my_error() in-between events. This causes the assertion, as the previous event
  has reported ok status, but the following event has not yet reset the
  diagnostics area. This happened when a worker thread detects that the SQL
  driver thread is aborting, and when it gets an error from a prior commit at
  the same time in wait_for_prior_commit().
  
  Since this is already an error case, the code should be using
  unregister_wait_for_prior_commit() instead of wait_for_prior_commit(). But
  unregister is already done a bit later (from finish_event_group()), so just
  removing the redundant call to wait_for_prior_commit() fixes the issue.
=== modified file 'sql/rpl_parallel.cc'
--- a/sql/rpl_parallel.cc	2014-03-21 12:30:55 +0000
+++ b/sql/rpl_parallel.cc	2014-03-24 10:22:16 +0000
@@ -576,7 +576,6 @@ handle_rpl_parallel_thread(void *arg)
         half-processed event group.
       */
       mysql_mutex_unlock(&rpt->LOCK_rpl_thread);
-      thd->wait_for_prior_commit();
       signal_error_to_sql_driver_thread(thd, group_rgi, 1);
       finish_event_group(thd, group_rgi->gtid_sub_id,
                          group_rgi->parallel_entry, group_rgi);



More information about the commits mailing list