1. 05 Sep, 2018 4 commits
    • antirez's avatar
      Propagate read-only scripts as SCRIPT LOAD. · dfbce91a
      antirez authored
      See issue #5250 and the new comments added to the code in this commit
      for details.
      dfbce91a
    • 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 14 commits
  3. 31 Aug, 2018 1 commit
  4. 29 Aug, 2018 21 commits