• Binbin's avatar
    Fix tail->repl_offset update in feedReplicationBuffer (#11905) · 7997874f
    Binbin authored
    
    
    In #11666, we added a while loop and will split a big reply
    node to multiple nodes. The update of tail->repl_offset may
    be wrong. Like before #11666, we would have created at most
    one new reply node, and now we will create multiple nodes if
    it is a big reply node.
    
    Now we are creating more than one node, and the tail->repl_offset
    of all the nodes except the last one are incorrect. Because we
    update master_repl_offset at the beginning, and then use it to
    update the tail->repl_offset. This would have lead to an assertion
    during PSYNC, a test was added to validate that case.
    
    Besides that, the calculation of size was adjusted to fix
    tests that failed due to a combination of a very low backlog size,
    and some thresholds of that get violated because of the relatively
    high overhead of replBufBlock. So now if the backlog size / 16 is too
    small, we'll take PROTO_REPLY_CHUNK_BYTES instead.
    Co-authored-by: default avatarOran Agra <oran@redislabs.com>
    7997874f
replication.c 166 KB