• Kristian Nielsen's avatar
    MDEV-6903: gtid_slave_pos is incorrect after master crash · b7968590
    Kristian Nielsen authored
    When a master slave restarts, it logs a special restart format description
    event in its binlog. When the slave sees this event, it knows it needs to roll
    back any active partial transaction, in case the master crashed previously in
    the middle of writing such transaction to its binlog.
    
    However, there was a bug where this rollback did not reset rgi->pending_gtid.
    This caused the @@gtid_slave_pos to be updated incorrectly with the GTID of
    the partial transaction that was rolled back.
    
    Fix this by always clearing rgi->pending_gtid in cleanup_context(), hopefully
    preventing similar bugs from turning up in other special cases where a
    transaction is rolled back during replication.
    
    Thanks to Pavel Ivanov for tracking down the issue and providing a test case.
    b7968590
rpl_gtid_crash.result 6.87 KB