• Angus Pearson's avatar
    Fix broken interval and repeat bahaviour in redis-cli (incluing cluster mode) · 2f6ed933
    Angus Pearson authored
    This addresses two problems, one where infinite (negative) repeat count is broken for all types for Redis,
    and another specific to cluster mode where redirection is needed.
    
    Now allows and works correctly for negative (i.e. -1) repeat values passed with `-r` argument to redis-cli
    as documented here https://redis.io/topics/rediscli#continuously-run-the-same-command which seems to have
    regressed as a feature in 95b988 (though that commit removed bad integer wrap-around to `0` behaviour).
    
    This broken behaviour exists currently (e50458), and redis-cli will just exit immediately with repeat `-r <= 0`
    as opposed to send commands indefinitely as it should with `-r < 0`
    
    Additionally prevents a repeat * interval seconds hang/time spent doing nothing at the start before issuing
    commands in cluster mode (`-c`), where the command needed to redirect to a slot on another node, as commands
    where failing and waiting to be reissued but this was fully repeated before being reissued. For example,
    
            redis-cli -c -r 10 -i 0.5 INCR test_key_not_on_6379
    
    Would hang and show nothing for 5 seconds (10 * 0.5) before showing
    
            (integer) 1
            (integer) 2
            (integer) 3
            (integer) 4
            (integer) 5
            (integer) 6
            (integer) 7
            (integer) 8
            (integer) 9
            (integer) 10
    
    at half second intervals as intended.
    2f6ed933
redis-cli.c 267 KB