• Viktor Söderqvist's avatar
    Sort out the mess around writable replicas and lookupKeyRead/Write (#9572) · acf3495e
    Viktor Söderqvist authored
    Writable replicas now no longer use the values of expired keys. Expired keys are
    deleted when lookupKeyWrite() is used, even on a writable replica. Previously,
    writable replicas could use the value of an expired key in write commands such
    as INCR, SUNIONSTORE, etc..
    
    This commit also sorts out the mess around the functions lookupKeyRead() and
    lookupKeyWrite() so they now indicate what we intend to do with the key and
    are not affected by the command calling them.
    
    Multi-key commands like SUNIONSTORE, ZUNIONSTORE, COPY and SORT with the
    store option now use lookupKeyRead() for the keys they're reading from (which will
    not allow reading from logically expired keys).
    
    This commit also fixes a bug where PFCOUNT could return a value of an
    expired key.
    
    Test modules commands have their readonly and write flags updated to correctly
    reflect their lookups for reading or writing. Modules are not required to
    correctly reflect this in their command flags, but this change is made for
    consistency since the tests serve as usage examples.
    
    Fixes #6842. Fixes #7475.
    acf3495e
hyperloglog.c 57.2 KB