Bug #72627 Rpl_semi_sync_master_net_wait_time was not calculated correctly
Submitted: 13 May 2014 7:55 Modified: 26 May 2015 8:45
Reporter: zhai weixiang (OCA) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Replication Severity:S3 (Non-critical)
Version:5.7.4 OS:Any
Assigned to: CPU Architecture:Any

[13 May 2014 7:55] zhai weixiang
Description:
In MySQL5.7.4 , rpl_semi_sync_master_net_wait_time was always zero, check the code in semisync_master.cc

[/u01/project/offical/5.7/plugin/semisync]
$grep --color -n 'rpl_semi_sync_master_net_wait_time' *
semisync_master.cc:45:unsigned long long rpl_semi_sync_master_net_wait_time = 0;
semisync_master.cc:1205:  rpl_semi_sync_master_net_wait_time = 0;
semisync_master.cc:1223:     (unsigned long)((double)rpl_semi_sync_master_net_wait_time /
semisync_master.h:866:extern unsigned long long rpl_semi_sync_master_net_wait_time;

And this will affect the result of Rpl_semi_sync_master_net_wait_time and Rpl_semi_sync_master_net_avg_wait_time (always equal to 0)

How to repeat:
read the code.

Suggested fix:
remove Rpl_semi_sync_master_net_wait_time and Rpl_semi_sync_master_net_avg_wait_time, or correct the calculation
[13 May 2014 9:51] MySQL Verification Team
Hello Weixiang,

Thank you for the report.

Thanks,
Umesh
[13 May 2014 9:54] MySQL Verification Team
5.7.4
======
mysql-5.7.4/plugin/semisync/semisync_master.cc:
   43  unsigned long long rpl_semi_sync_master_net_wait_num = 0;
   44  unsigned long rpl_semi_sync_master_clients          = 0;
   45: unsigned long long rpl_semi_sync_master_net_wait_time = 0;
   46  unsigned long long rpl_semi_sync_master_trx_wait_time = 0;
   47  char rpl_semi_sync_master_wait_no_slave = 1;
   ..
 1203    rpl_semi_sync_master_trx_wait_time = 0;
 1204    rpl_semi_sync_master_net_wait_num = 0;
 1205:   rpl_semi_sync_master_net_wait_time = 0;
 1206  
 1207    unlock();
 ....
 1221    rpl_semi_sync_master_avg_net_wait_time=
 1222      ((rpl_semi_sync_master_net_wait_num) ?
 1223:      (unsigned long)((double)rpl_semi_sync_master_net_wait_time /
 1224                       ((double)rpl_semi_sync_master_net_wait_num)) : 0);
 1225  

/mysql-5.7.4/plugin/semisync/semisync_master.h:
  864  extern unsigned long long rpl_semi_sync_master_net_wait_num;
  865  extern unsigned long long rpl_semi_sync_master_trx_wait_num;
  866: extern unsigned long long rpl_semi_sync_master_net_wait_time;
  867  extern unsigned long long rpl_semi_sync_master_trx_wait_time;
  868  

/mysql-5.7.4/plugin/semisync/semisync_master_plugin.cc:
  444     (char*) &SHOW_FNAME(avg_trx_wait_time),
  445     SHOW_FUNC},
  446:   {"Rpl_semi_sync_master_net_wait_time",
  447     (char*) &SHOW_FNAME(net_wait_time),
  448     SHOW_FUNC},
[26 May 2015 8:45] David Moss
Thanks for your feedback. The following was noted in the 5.7.8 changelog:

The status variables Rpl_semi_sync_master_net_wait_time and Rpl_semi_sync_master_net_avg_wait_time were always 0 in MySQL 5.7.4 and later. These variables are now deprecated and will be removed in a future version.

And notes were added to the following status variables in the 5.7 reference manual:
http://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html#statvar_Rpl_semi_sync_...

http://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html#statvar_Rpl_semi_sync_...