• Brandon Nesterenko's avatar
    MDEV-33331: IO Thread Relay Log Inconsistent Statistics After MDEV-32551 · dd95c58b
    Brandon Nesterenko authored
    After MDEV-32551, in a master/slave setup, if the replica's IO thread
    quickly and successively reconnects (i.e quickly running
    STOP SLAVE IO_THREAD followed by START SLAVE IO_THREAD), the relay log
    rotation behavior changes. That is, MDEV-32551 changed the logic of the
    binlog_dump_thread on the primary, such that it can stop itself before
    sending any events if it sees a new connection has been created to a
    replica with the same server_id. Pre MDEV-32551, the connection would
    establish and it would send a "fake" rotate event to populate the
    log name. Post MDEV-32551, the connection stops itself, and a rotate
    event is not sent.
    
    This made the test rpl.rpl_mariadb_slave_capability unstable because
    it is reliant on the name of the relay logs (which is dependent on the
    number of rotates); and the pre-amble of the test would quickly
    start/stop the IO thread. There a binlog dump thread could end itself
    before sending a rotate event to the replica, thereby changing the name
    of the relay log.
    
    This patch fixes this by adding in a synchronization in-between IO thread
    restarts, such that it waits for the primary's binlog dump threads to
    sync up with the state of the replica.
    dd95c58b
rpl_mariadb_slave_capability.test 5.91 KB