• antirez's avatar
    Diskless SYNC: fix RDB EOF detection. · bb7fea0d
    antirez authored
    RDB EOF detection was relying on the final part of the RDB transfer to
    be a magic 40 bytes EOF marker. However as the slave is put online
    immediately, and because of sockets timeouts, the replication stream is
    actually contiguous with the RDB file.
    
    This means that to detect the EOF correctly we should either:
    
    1) Scan all the stream searching for the mark. Sucks CPU-wise.
    2) Start to send the replication stream only after an acknowledge.
    3) Implement a proper chunked encoding.
    
    For now solution "2" was picked, so the master does not start to send
    ASAP the stream of commands in the case of diskless replication. We wait
    for the first REPLCONF ACK command from the slave, that certifies us
    that the slave correctly loaded the RDB file and is ready to get more
    data.
    bb7fea0d
replication.c 82.3 KB