| Bug #70410 | DDL queries increases rpl_semi_sync_master_yes_tx by a value of 2 | ||
|---|---|---|---|
| Submitted: | 24 Sep 2013 18:49 | Modified: | 27 Nov 2013 17:03 | 
| Reporter: | Santosh Praneeth Banda | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Replication | Severity: | S3 (Non-critical) | 
| Version: | mysql 5.6.13, 5.6.14 | OS: | Any | 
| Assigned to: | CPU Architecture: | Any | |
   [24 Sep 2013 18:49]
   Santosh Praneeth Banda        
  
 
   [25 Sep 2013 13:08]
   MySQL Verification Team        
  Hello Santosh, Thank you for the bug report and test case. Verified as described. Thanks, Umesh
   [27 Nov 2013 17:03]
   Jon Stephens        
  Fixed in 5.6+. Noted as follows in the 5.6.16 and 5.7.4 changelogs:
        The semisynchronous replication plugin was called twice for a
        DDL statement, incrementing rpl_semi_sync_master_yes_tx by 2
        instead of 1 each time such a statement was executed.
Closed.
 
   [3 Feb 2014 10:44]
   Laurynas Biveinis        
  5.6$ bzr log -r 5652 ------------------------------------------------------------ revno: 5652 committer: Luis Soares <luis.soares@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2013-11-27 09:19:19 +0000 message: BUG#17509011: DDL QUERIES INCREASES RPL_SEMI_SYNC_MASTER_YES_TX BY A VALUE OF 2 The problem is that the after_commit hook is being called twice during the DDL execution: first on the COMMIT stage of the binlog group commit procedure (MYSQL_BIN_LOG::process_after_commit_stage_queue) and a second time during the transaction implicit commit (trans_commit_implicit). And this happens even though the first time the hook is called, the flag transaction->run_hooks is set to false. The smallest and quickest fix for this issue is to deploy checks when we call the after_commit hook, to verify that we have not called the hook already during this "transaction" lifecycle.
