[Commits] Rev 4487: MDEV-7102: Incorrect PSI_stage_info message in SHOW PROCESSLIST during 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 14:55:54 EET 2014


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

------------------------------------------------------------
revno: 4487
revision-id: knielsen at knielsen-hq.org-20141113085628-9kjipbpd32649f57
parent: knielsen at knielsen-hq.org-20141113084933-imd200jenbwgjfoc
committer: Kristian Nielsen <knielsen at knielsen-hq.org>
branch nick: work-10.0
timestamp: Thu 2014-11-13 09:56:28 +0100
message:
  MDEV-7102: Incorrect PSI_stage_info message in SHOW PROCESSLIST during parallel replication
  
  In parallel replication, threads can do two different waits for a prior
  transaction. One is for the prior transaction to start commit, the other is
  for it to complete commit.
  
  It turns out that the same PSI_stage_info message was errorneously used in
  both cases (probably a merge error), causing SHOW PROCESSLIST to be
  misleading.
  
  Fix by using correct, distinct message in each case.
=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc	2014-10-09 08:30:11 +0000
+++ b/sql/mysqld.cc	2014-11-13 08:56:28 +0000
@@ -9484,7 +9484,8 @@ PSI_stage_info stage_binlog_waiting_back
 PSI_stage_info stage_binlog_processing_checkpoint_notify= { 0, "Processing binlog checkpoint notification", 0};
 PSI_stage_info stage_binlog_stopping_background_thread= { 0, "Stopping binlog background thread", 0};
 PSI_stage_info stage_waiting_for_work_from_sql_thread= { 0, "Waiting for work from SQL thread", 0};
-PSI_stage_info stage_waiting_for_prior_transaction_to_commit= { 0, "Waiting for prior transaction to start commit before starting next transaction", 0};
+PSI_stage_info stage_waiting_for_prior_transaction_to_commit= { 0, "Waiting for prior transaction to commit", 0};
+PSI_stage_info stage_waiting_for_prior_transaction_to_start_commit= { 0, "Waiting for prior transaction to start commit before starting next transaction", 0};
 PSI_stage_info stage_waiting_for_room_in_worker_thread= { 0, "Waiting for room in worker thread event queue", 0};
 PSI_stage_info stage_master_gtid_wait_primary= { 0, "Waiting in MASTER_GTID_WAIT() (primary waiter)", 0};
 PSI_stage_info stage_master_gtid_wait= { 0, "Waiting in MASTER_GTID_WAIT()", 0};
@@ -9599,6 +9600,7 @@ PSI_stage_info *all_server_stages[]=
   & stage_waiting_for_master_to_send_event,
   & stage_waiting_for_master_update,
   & stage_waiting_for_prior_transaction_to_commit,
+  & stage_waiting_for_prior_transaction_to_start_commit,
   & stage_waiting_for_query_cache_lock,
   & stage_waiting_for_relay_log_space,
   & stage_waiting_for_room_in_worker_thread,

=== modified file 'sql/mysqld.h'
--- a/sql/mysqld.h	2014-10-09 08:30:11 +0000
+++ b/sql/mysqld.h	2014-11-13 08:56:28 +0000
@@ -448,6 +448,7 @@ extern PSI_stage_info stage_binlog_proce
 extern PSI_stage_info stage_binlog_stopping_background_thread;
 extern PSI_stage_info stage_waiting_for_work_from_sql_thread;
 extern PSI_stage_info stage_waiting_for_prior_transaction_to_commit;
+extern PSI_stage_info stage_waiting_for_prior_transaction_to_start_commit;
 extern PSI_stage_info stage_waiting_for_room_in_worker_thread;
 extern PSI_stage_info stage_master_gtid_wait_primary;
 extern PSI_stage_info stage_master_gtid_wait;

=== modified file 'sql/rpl_parallel.cc'
--- a/sql/rpl_parallel.cc	2014-09-08 10:59:57 +0000
+++ b/sql/rpl_parallel.cc	2014-11-13 08:56:28 +0000
@@ -656,7 +656,7 @@ handle_rpl_parallel_thread(void *arg)
           DEBUG_SYNC(thd, "rpl_parallel_start_waiting_for_prior");
           thd->ENTER_COND(&gco->COND_group_commit_orderer,
                           &entry->LOCK_parallel_entry,
-                          &stage_waiting_for_prior_transaction_to_commit,
+                          &stage_waiting_for_prior_transaction_to_start_commit,
                           &old_stage);
           did_enter_cond= true;
           do



More information about the commits mailing list