Skip to content
  • Pedro Gomes's avatar
    dd0fbffd
    Bug#15985893: GTID SKIPPED EVENTS ON MASTER CAUSE SEMI SYNC TIME-OUTS · dd0fbffd
    Pedro Gomes authored
    hen using GTIDs and semi sync, whenever a transaction is
    executed on the master but is not sent to the slave because it
    already has this id, semi sync will time out.  In fact, semi sync
    hooks will still trigger a waiting process in the master, but as
    the transaction never reaches the slave, a reply is never sent.
    
    Making the semi sync plug-in call the reportReplyBinlog method
    whenever a transaction is skipped solves this issue.
    
    @semisync_master.cc
      A new method skipSlaveReply was created  to allow
      the interruption of the waiting process without a reply.
    @semisync_master.h
      New method header and other headers updated
    @semisync_master_plugin.cc
      The after send event response now depends on the transaction being 
      skipped or not
    @replication.h rpl_handler.h rpl_handler.cc
      The after_send_event hook now takes new parameters that flag if the
      event was skipped, what was is position and binlog. 
    @rpl_master.cc
      The after_send_event hook is now always invoked taking as new
      parameters the position and binlog when transactions are skipped.
    dd0fbffd
    Bug#15985893: GTID SKIPPED EVENTS ON MASTER CAUSE SEMI SYNC TIME-OUTS
    Pedro Gomes authored
    hen using GTIDs and semi sync, whenever a transaction is
    executed on the master but is not sent to the slave because it
    already has this id, semi sync will time out.  In fact, semi sync
    hooks will still trigger a waiting process in the master, but as
    the transaction never reaches the slave, a reply is never sent.
    
    Making the semi sync plug-in call the reportReplyBinlog method
    whenever a transaction is skipped solves this issue.
    
    @semisync_master.cc
      A new method skipSlaveReply was created  to allow
      the interruption of the waiting process without a reply.
    @semisync_master.h
      New method header and other headers updated
    @semisync_master_plugin.cc
      The after send event response now depends on the transaction being 
      skipped or not
    @replication.h rpl_handler.h rpl_handler.cc
      The after_send_event hook now takes new parameters that flag if the
      event was skipped, what was is position and binlog. 
    @rpl_master.cc
      The after_send_event hook is now always invoked taking as new
      parameters the position and binlog when transactions are skipped.
Loading