[Commits] Rev 4506: MDEV-6718: Server crashed in Gtid_log_event::Gtid_log_event with parallel replication in http://bazaar.launchpad.net/~maria-captains/maria/10.0

knielsen at knielsen-hq.org knielsen at knielsen-hq.org
Thu Nov 13 16:09:56 EET 2014


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

------------------------------------------------------------
revno: 4506
revision-id: knielsen at knielsen-hq.org-20140930141843-28knfm96vc15grdk
parent: knielsen at knielsen-hq.org-20140929084140-d53q0zm3gitjt11x
committer: Kristian Nielsen <knielsen at knielsen-hq.org>
branch nick: work-10.0-mdev6676
timestamp: Tue 2014-09-30 16:18:43 +0200
message:
  MDEV-6718: Server crashed in Gtid_log_event::Gtid_log_event with parallel replication
  
  Marked-for: 10.0
  
  The bug occured in parallel replication when re-trying transactions that
  failed due to deadlock. In this case, the relay log file is re-opened and the
  events are read out again. This reading requires a format description event of
  the appropriate version. But the code was using a description event stored in
  rli, which is not thread-safe. This could lead to various rare races if the
  format description event was replaced by the SQL driver thread at the exact
  moment where a worker thread was trying to use it.
  
  The fix is to instead make the retry code create and maintain its own format
  description event. When the relay log file is opened, we first read the format
  description event from the start of the file, before seeking to the current
  position. This now uses the same code as when the SQL driver threads starts
  from a given relay log position. This also makes sure that the correct format
  description event version will be used in cases where the version of the
  binlog could change during replication.


More information about the commits mailing list