• Oran Agra's avatar
    Avoid rejecting WATCH / UNWATCH, like MULTI/EXEC/DISCARD · 2fa077b0
    Oran Agra authored
    Much like MULTI/EXEC/DISCARD, the WATCH and UNWATCH are not actually
    operating on the database or server state, but instead operate on the
    client state. the client may send them all in one long pipeline and check
    all the responses only at the end, so failing them may lead to a
    mismatch between the client state on the server and the one on the
    client end, and execute the wrong commands (ones that were meant to be
    discarded)
    
    the watched keys are not actually stored in the client struct, but they
    are in fact part of the client state. for instance, they're not cleared
    or moved in SWAPDB or FLUSHDB.
    2fa077b0
server.c 187 KB