mirror of
https://github.com/MariaDB/server.git
synced 2026-05-14 19:07:15 +02:00
Bug#17327454:SEMI-SYNC REPLICATION MASTER CRASH WHEN SET
RPL_SEMI_SYNC_MASTER_ENABLED OFF. Problem: ======= If master is waiting for a reply from slave, at this time set global rpl_semi_sync_master_enabled=OFF, the master server will crash. Analysis: ======== When master is waiting for a reply from slave, at this time if semi sync is switched off on master, during switch off if active transactions are present the transactions will be cleared and "active_tranxs_" variable will be set to NULL. When the waiting master connection finds that semi sync is switched of it tries to access "active_tranxs_" without checking if the transaction list exists or not. Accessing NULL transaction list causes the crash. Fix: === A check has been added to see a valid list exists before accessing the "active_tranxs_".
This commit is contained in:
parent
d0941fbc4c
commit
5a5024a6bd
1 changed files with 2 additions and 1 deletions
|
|
@ -752,7 +752,8 @@ int ReplSemiSyncMaster::commitTrx(const char* trx_wait_binlog_name,
|
|||
At this point, the binlog file and position of this transaction
|
||||
must have been removed from ActiveTranx.
|
||||
*/
|
||||
assert(!active_tranxs_->is_tranx_end_pos(trx_wait_binlog_name,
|
||||
assert(!getMasterEnabled() ||
|
||||
!active_tranxs_->is_tranx_end_pos(trx_wait_binlog_name,
|
||||
trx_wait_binlog_pos));
|
||||
|
||||
/* Update the status counter. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue