• Luis Soares's avatar
    BUG#50364: FLUSH LOGS crashes the server (rpl.rpl_heartbeat_basic · d0ffa8e5
    Luis Soares authored
    fails in PB sporadically)
          
    The IO thread can concurrently access the relay log IO_CACHE
    while another thread is performing an FLUSH LOGS procedure.
          
    FLUSH LOGS closes and reopens the relay log and while doing so it
    (re)initializes its IO_CACHE. During this procedure the IO_CACHE
    mutex is also reinitialized, which can cause problems if some
    other thread (namely the IO THREAD) is concurrently accessing it
    at the time .
          
    This patch fixes the problem by extending the interface of the
    flush_master_info function to also include a second paramater, 
    "need_relay_log_lock", stating whether the thread should grab the 
    relay log lock or not before actually flushing the relay log. 
    Also, IO thread now calls flush_master_info with this flag set 
    when it flushes master info with in the event read_event loop.
    
    Finally, we also increase loop time in rpl_heartbeat_basic test 
    case, so that the number of calls to flush logs doubles, stressing
    this part of the code a little more.
    d0ffa8e5
slave.cc 167 KB