• Brandon Nesterenko's avatar
    MDEV-29369: rpl.rpl_semi_sync_shutdown_await_ack fails regularly with Result content mismatch · 03d1346e
    Brandon Nesterenko authored
    This test was prone to failures for a few reasons, summarized below:
    
     1) MDEV-32168 introduced “only_running_threads=1” to
    slave_stop.inc, which allowed the stop logic to bypass an
    attempting-to-reconnect IO thread. That is, the IO thread could
    realize the master shutdown in `read_event()`, and thereby call into
    `try_to_reconnect()`. This would leave the IO thread up when the
    test expected it to be stopped. Fixed by explicitly stopping the
    IO thread and allowing an error state, as the above case would
    lead to errno 2003.
    
     2) On slow systems (or those running profiling tools, e.g. MSAN),
    the waiting-for-ack transaction can complete before the system
    processes the `SHUTDOWN WAIT FOR ALL SLAVES`. There was shutdown
    preparation logic in-between the transaction and shutdown itself,
    which contributes to this problem. This patch also moves this
    preparation logic before the transaction, so there is less to do
    in-between the calls.
    
     3) Changed work-around for MDEV-28141 to use debug_sync instead
    of sleep delay, as it was still possible to hit the bug on very
    slow systems.
    
     4) Masked MTR variable reset with disable/enable query log
    
    Reviewed By:
    ============
    Kristian Nielsen <knielsen@knielsen-hq.org>
    03d1346e
semisync_slave.cc 8.69 KB