-
Venkatesh Duggirala authored
Fixing a post push pb2 valgrind failure: ======================================== Analysis: In commitTrx(), when a thread is waiting for the signal on a condition variable (entry->cond) after releasing LOCK_binlog_, it can happen that this 'entry' node in active transaction list deleted by another parallel thread which is doing semi sync off (::disableMaster or ::switch_off or resetMaster). This leads to invalid memory read issue. Fix: Now with the new design, only the thread who is doing commit is responsible for deleting the active transaction node. All other operations (disableMaster, switch_off and resetMaster) will not delete nodes from the active transaction list. If disableMaster and resetMaster finds that there are no nodes in the list, it will delete active_tranxs_ node.
Venkatesh Duggirala authoredFixing a post push pb2 valgrind failure: ======================================== Analysis: In commitTrx(), when a thread is waiting for the signal on a condition variable (entry->cond) after releasing LOCK_binlog_, it can happen that this 'entry' node in active transaction list deleted by another parallel thread which is doing semi sync off (::disableMaster or ::switch_off or resetMaster). This leads to invalid memory read issue. Fix: Now with the new design, only the thread who is doing commit is responsible for deleting the active transaction node. All other operations (disableMaster, switch_off and resetMaster) will not delete nodes from the active transaction list. If disableMaster and resetMaster finds that there are no nodes in the list, it will delete active_tranxs_ node.
Loading