1. 05 Sep, 2018 3 commits
    • antirez's avatar
      Don't perform eviction when re-entering the event loop. · 1705e42e
      antirez authored
      Related to #5250.
      1705e42e
    • antirez's avatar
      Clarify why remaining may be zero in readQueryFromClient(). · a0dd6f82
      antirez authored
      See #5304.
      a0dd6f82
    • zhaozhao.zz's avatar
      networking: fix unexpected negative or zero readlen · 2eed31a5
      zhaozhao.zz authored
      To avoid copying buffers to create a large Redis Object which
      exceeding PROTO_IOBUF_LEN 32KB, we just read the remaining data
      we need, which may less than PROTO_IOBUF_LEN. But the remaining
      len may be zero, if the bulklen+2 equals sdslen(c->querybuf),
      in client pause context.
      
      For example:
      
      Time1:
      
      python
      >>> import os, socket
      >>> server="127.0.0.1"
      >>> port=6379
      >>> data1="*3\r\n$3\r\nset\r\n$1\r\na\r\n$33000\r\n"
      >>> data2="".join("x" for _ in range(33000)) + "\r\n"
      >>> data3="\n\n"
      >>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      >>> s.settimeout(10)
      >>> s.connect((server, port))
      >>> s.send(data1)
      28
      
      Time2:
      
      redis-cli client pause 10000
      
      Time3:
      
      >>> s.send(data2)
      33002
      >>> s.send(data3)
      2
      >>> s.send(data3)
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      socket.error: [Errno 104] Connection reset by peer
      
      To fix that, we should check if remaining is greater than zero.
      2eed31a5
  2. 04 Sep, 2018 11 commits
  3. 29 Aug, 2018 17 commits
  4. 03 Aug, 2018 1 commit
  5. 02 Aug, 2018 8 commits