1. 22 Feb, 2021 2 commits
    • Wen Hui's avatar
      SRANDMEMBER RESP3 return should be Array, not Set (#8504) · f5235b2d
      Wen Hui authored
      
      
      SRANDMEMBER with negative count (non unique) can return the same member
      multiple times, and the order of elements in the returned collection matters.
      For these reasons returning a RESP3 Set type is not valid for the negative
      count, but also not really valid for the positive (unique) variant either (the
      command returns an array of random picks, not a set)
      
      This PR also contains a minor optimization for SRANDMEMBER, HRANDFIELD,
      and ZRANDMEMBER, to avoid the temporary dict from being rehashed while it grows.
      Co-authored-by: default avatarOran Agra <oran@redislabs.com>
      f5235b2d
    • sundb's avatar
      Improve overflow check of expire time (#8519) · 362f2a84
      sundb authored
      When milliseconds == LLONG_MAX / 1000, *1000 will not overflow.
      362f2a84
  2. 21 Feb, 2021 3 commits
    • Yossi Gottlieb's avatar
      Fix allowed length for REPLCONF ip-address. (#8517) · d828f90c
      Yossi Gottlieb authored
      Originally this was limited to IPv6 address length, but effectively it
      has been used for host names and now that Sentinel accepts that as well
      we need to be able to store full hostnames.
      
      Fixes #8507
      d828f90c
    • Huang Zw's avatar
      Client tracking tracking-redir-broken push len is 2 not 3 (#8456) · f687ac0c
      Huang Zw authored
      When redis responds with tracking-redir-broken push message (RESP3),
      it was responding with a broken protocol: an array of 3 elements, but only
      pushes 2 elements.
      
      Some bugs in the test make this pass. Read the push reply
      will consume an extra reply, because the reply length is 3, but there
      are only two elements, so the next reply will be treated as third
      element. So the test is corrected too.
      
      Other changes:
      * checkPrefixCollisionsOrReply success should return 1 instead of -1,
        this bug didn't have any implications.
      * improve client tracking tests to validate more of the response it reads.
      f687ac0c
    • Gnanesh's avatar
      EXPIRE, EXPIREAT, SETEX, GETEX: Return error when expire time overflows (#8287) · 0772098b
      Gnanesh authored
      
      
      Respond with error if expire time overflows from positive to negative of vice versa.
      
      * `SETEX`, `SET EX`, `GETEX` etc would have already error on negative value,
      but now they would also error on overflows (i.e. when the input was positive but
      after the manipulation it becomes negative, which would have passed before)
      * `EXPIRE` and `EXPIREAT` was ok taking negative values (would implicitly delete
      the key), we keep that, but we do error if the user provided a value that changes
      sign when manipulated (except the case of changing sign when `basetime` is added)
      Signed-off-by: default avatarGnanesh <gnaneshkunal@outlook.com>
      Co-authored-by: default avatarOran Agra <oran@redislabs.com>
      0772098b
  3. 20 Feb, 2021 1 commit
    • Jim Brunner's avatar
      dict: pause rehash, minor readability refactor (#8515) · 06966d2a
      Jim Brunner authored
      The `dict` field `iterators` is misleading and incorrect. 
      This variable is used for 1 purpose - to pause rehashing.
      
      The current `iterators` field doesn't actually count "iterators".
      It counts "safe iterators".  But - it doesn't actually count safe iterators
      either.  For one, it's only incremented once the safe iterator begins to
      iterate, not when it's created.  It's also incremented in `dictScan` to
      prevent rehashing (and commented to make it clear why `iterators` is
      being incremented during a scan).
      
      This update renames the field as `pauserehash` and creates 2 helper
      macros `dictPauseRehashing(d)` and `dictResumeRehashing(d)`
      06966d2a
  4. 19 Feb, 2021 1 commit
  5. 17 Feb, 2021 2 commits
  6. 16 Feb, 2021 5 commits
  7. 15 Feb, 2021 5 commits
  8. 14 Feb, 2021 1 commit
  9. 11 Feb, 2021 2 commits
  10. 10 Feb, 2021 2 commits
  11. 09 Feb, 2021 3 commits
  12. 08 Feb, 2021 5 commits
  13. 07 Feb, 2021 5 commits
  14. 05 Feb, 2021 3 commits