mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
MDEV-8147: Assertion `m_lock_type == 2' failed in handler::ha_close() during parallel replication
When the slave processes the master restart format_description event, parallel replication needs to complete any prior events before processing the restart event (which closes temporary tables and such stuff). This happens in wait_for_workers_idle(), however it was not waiting long enough. The wait was using wait_for_prior_commit(), but at that points table can still be open. This lead to assertion in this case. So change wait_for_workers_idle() to wait until all worker threads have reached finish_event_group(), at which point all tables should have been closed.
This commit is contained in:
@ -227,6 +227,12 @@ struct rpl_parallel_entry {
|
||||
waiting for event groups to complete.
|
||||
*/
|
||||
bool force_abort;
|
||||
/*
|
||||
Set in wait_for_workers_idle() to show that it is waiting, so that
|
||||
finish_event_group knows to signal it when last_committed_sub_id is
|
||||
increased.
|
||||
*/
|
||||
bool need_sub_id_signal;
|
||||
/*
|
||||
At STOP SLAVE (force_abort=true), we do not want to process all events in
|
||||
the queue (which could unnecessarily delay stop, if a lot of events happen
|
||||
|
Reference in New Issue
Block a user