• Sachin Kumar's avatar
    MDEV-25336 Parallel replication causes failed assert while restarting · e607f339
    Sachin Kumar authored
    Problem:- When slave is shutdown, we will get this assertion failure
    sql/sql_list.h:642: void ilink::assert_linked(): Assertion `prev != 0
    && next != 0' failed.
    
    Solution:- In close_connections when we call threads.get() it resets to
    prev and next to NULL. And in parallel worker thread(handle_rpl_parallel_thread)
    calls unlink_not_visible_thd() which assert on prev and next being not NULL.
    .unlink_not_visible_thd() should be always called first before threads.get()
    is called. To make sure worker calls unlink_not_visible_thd() in
    slave_prepare_for_shutdown() we are deactivating the  worker thread pool
    which in turn will close all worker threads. Since this is already done in 10.4
    and 10.5 I am backPorting MDEV-20821 and MDEV-22370 to 10.2. Mdev-22370
    is improving the MDEV-20821 patch.
    e607f339
rpl_slave_shutdown_mdev20821.test 4.15 KB