Bug #70577 Read/Write mutexes on Binlog delegate classes are not counted on perf schema

Submitted: 9 Oct 2013 21:47 Modified: 15 Oct 2013 18:19
Reporter: Yoshinori Matsunobu (OCA) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Performance Schema Severity:S3 (Non-critical)
Version:5.6.14 OS:Any
Assigned to: Marc ALFF CPU Architecture:Any

[9 Oct 2013 21:47] Yoshinori Matsunobu
Description:
Binlog delegate classes (used for semisync replication) use read/write mutexes internally, but they are not counted on performance schema statistics.
At least below classes are affected.

Trans_delegate
Binlog_storage_delegate
Binlog_transmit_delegate
Binlog_relay_IO_delegate

On parent class Delegate, there is a member variable "rw_lock_t lock", and within some member functions, lock is held by "rw_rdlock(&lock)" etc.

rw_rdlock is mapped to pthread_rwlock_rdlock. This should be mysql_rwlock_rdlock so that performance schema can cover.

While investigating bug#70218, we noticed that Binlog_transmit_delegate::lock caused lots of contentions, but they were not visible from performance schema.

How to repeat:
Read sql/rpl_handler.h and include/my_pthread.h
[10 Oct 2013 18:20] Sveta Smirnova
Thank you for the report.

Verified as described.
[15 Oct 2013 18:19] Paul DuBois
Noted in 5.6.15, 5.7.3 changelogs.

The Performance Schema now instruments the read/write lock
Delegate::lock, which is used for the following classes:

Trans_delegate
Binlog_storage_delegate
Binlog_transmit_delegate
Binlog_relay_IO_delegate

A different instrument name is used for each subclass, to have
distinct statistics for distinct uses. The instruments are visible in
the schema.setup_instruments table and have these names:
      
wait/synch/rwlock/sql/Trans_delegate::lock
wait/synch/rwlock/sql/Binlog_storage_delegate::lock
wait/synch/rwlock/sql/Binlog_transmit_delegate::lock
wait/synch/rwlock/sql/Binlog_relay_IO_delegate::lock
[4 Dec 2013 11:55] Laurynas Biveinis
5.6$ bzr log -r 5513 -n0
------------------------------------------------------------
revno: 5513 [merge]
committer: Marc Alff <marc.alff@oracle.com>
branch nick: mysql-5.6-push
timestamp: Sat 2013-10-12 01:22:41 +0200
message:
  Merge to mysql-5.6
    ------------------------------------------------------------
    revno: 5510.1.1
    committer: Marc Alff <marc.alff@oracle.com>
    branch nick: mysql-5.6-bug17590161
    timestamp: Fri 2013-10-11 17:31:42 +0200
    message:
      Bug#17590161 READ/WRITE MUTEXES ON BINLOG DELEGATE CLASSES ARE NOT COUNTED
      ON PERF SCHEMA 
      
      Prior to this fix, the read write lock Delegate::lock was not instrumented 
      for the performance schema.
      This lock is used in particular for the following classes:
      - Trans_delegate
      - Binlog_storage_delegate
      - Binlog_transmit_delegate
      - Binlog_relay_IO_delegate
      
      With this fix, the read write lock is instrumented.
      For clarity, a different name is used for each sub class,
      to have distinct statistics for distinct uses.
      
      The instruments added are visible in table 
      performance_schema.setup_instruments as:
      - wait/synch/rwlock/sql/Trans_delegate::lock
      - wait/synch/rwlock/sql/Binlog_storage_delegate::lock
      - wait/synch/rwlock/sql/Binlog_transmit_delegate::lock
      - wait/synch/rwlock/sql/Binlog_relay_IO_delegate::lock

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.054 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.