• Andrei Elkin's avatar
    MDEV-14014 Multi-Slave Replication Fail: bogus data in log event · 8ca18294
    Andrei Elkin authored
    MDEV-7257 made a dump thread to read from binlog concurrently with
    writers as long as the read bytes are below a water-mark
    (MYSQL_BIN_LOG::binlog_end_pos). However it appeared to be possible a
    dump thread reader reach out for bytes past the water mark through a
    feature of IO_CACHE that fills in the internal buffer and while doing
    so it could read what the reader is not supposed to see (the bytes
    above MYSQL_BIN_LOG::binlog_end_pos).
    
    The issue is fixed with constraining the IO_CACHE buffer fill to respect
    the watermark.
    
    An added unit test proves reading from file is bound to an external
    parameter
    passed to {IO_CACHE::end_of_file} cache member.
    8ca18294
sql_repl.cc 139 KB