• Pieter Noordhuis's avatar
    Don't expire keys when loading an RDB after a SYNC · aa794ac0
    Pieter Noordhuis authored
    The cron is responsible for expiring keys. When keys are expired at
    load time, it is possible that the snapshot of a master node gets
    modified. This can in turn lead to inconsistencies in the data set.
    
    A more concrete example of this behavior follows. A user reported a
    slave that would show an monotonically increase input buffer length,
    shortly after completing a SYNC. Also, `INFO` output showed a single
    blocked client, which could only be the master link. Investigation
    showed that indeed the `BRPOP` command was fed by the master. This
    command can only end up in the stream of write operations when it did
    NOT block, and effectively executed `RPOP`. However, when the key
    involved in the `BRPOP` is expired BEFORE the command is executed, the
    client executing it will block. The client in this case, is the master
    link.
    aa794ac0
rdb.c 36.9 KB