• Oran Agra's avatar
    Fix race in client side tracking (#9116) · abd44c83
    Oran Agra authored
    The `Tracking gets notification of expired keys` test in tracking.tcl
    used to hung in valgrind CI quite a lot.
    
    It turns out the reason is that with valgrind and a busy machine, the
    server cron active expire cycle could easily run in the same event loop
    as the command that created `mykey`, so that when they key got expired,
    there were two change events to broadcast, one that set the key and one
    that expired it, but since we used raxTryInsert, the client that was
    associated with the "last" change was the one that created the key, so
    the NOLOOP filtered that event.
    
    This commit adds a test that reproduces the problem by using lazy expire
    in a multi-exec which makes sure the key expires in the same event loop
    as the one that added it.
    
    (cherry picked from commit 9b564b52)
    abd44c83
tracking.tcl 21.2 KB