main.percona_processlist_row_stats fails sporadically in 5.5.11
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
percona-projects-qa |
Fix Released
|
Undecided
|
Alexey Kopytov |
Bug Description
main.percona_
It sets 2 different signals to be emitted by 2 threads at certain points (thread1_ready and thread2_ready), and then it runs queries in both threads asynchronously, then it waits for both signals to arrive:
--connection default
SET DEBUG_SYNC= 'now WAIT_FOR thread1_ready';
SET DEBUG_SYNC= 'now WAIT_FOR thread2_ready';
The problem is that whenever a signal is emitted it "overwrites" the previously emitted signal value, so there can be just one signalled value at any point in time. So if thread2_ready is signalled after thread1_ready but before the master thread has blocked on thread1_ready, thread2_ready will overwrite it, so the master thread will never receive thread1_ready.
The solution is to start asynchronous queries and wait for the corresponding signal sequentially for each thread, i.e.:
# In thread 1
--send <query in thread 1>
# In master thread:
SET DEBUG_SYNC= 'now WAIT_FOR thread1_ready';
# In thread 2
--send <query in thread 2>
# In master thread:
SET DEBUG_SYNC= 'now WAIT_FOR thread2_ready';
Related branches
Changed in percona-projects-qa: | |
assignee: | nobody → Alexey Kopytov (akopytov) |
Changed in percona-projects-qa: | |
status: | New → Fix Committed |
Changed in percona-projects-qa: | |
status: | Fix Committed → Fix Released |