• Moti Cohen's avatar
    Fix H(P)EXPIREAT command to propagate HDEL as well (#13364) · 5eac99c3
    Moti Cohen authored
    H(P)EXPIREAT command might delete fields in case the absolute time is in the 
    past. Those HDELs need to be propagated as well.
     
    In general, as we need to propagate H(P)EXPIRE(AT) command to the replica, each 
    field that is mentioned in the command should be categorized into one of the four
    options:
    1. Managed to update field’s expiration time - propagate it to replica as part 
       of the HPEXPIREAT command.
    2. Deleted the field because the time is in the past - propagate also HDEL command
       to delete the field and remove the field from the propagated HPEXPIREAT.
    3. Condition not met for the field - Remove the field from the propagated
       HPEXPIREAT command.
    4. Field does not exists - Remove the field from the propagated HPEXPIREAT command.
    
    If none of the provided fields match option number 1, then avoid also propagating 
    the HPEXPIREAT command to the replica.
    
    This approach is aligned with the EXPIRE command:
    If a given key has already expired, then DEL will be propagated instead of
    EXPIRE command. If condition not met, then command will be rejected. Otherwise, 
    EXPIRE command will be propagated for given key.
    5eac99c3
t_hash.c 121 KB