1. 22 2月, 2012 2 次提交
  2. 21 2月, 2012 1 次提交
  3. 20 2月, 2012 3 次提交
  4. 17 2月, 2012 1 次提交
    • P
      Don't expire keys when loading an RDB after a SYNC · cb598cdd
      Pieter Noordhuis 提交于
      The cron is responsible for expiring keys. When keys are expired at
      load time, it is possible that the snapshot of a master node gets
      modified. This can in turn lead to inconsistencies in the data set.
      
      A more concrete example of this behavior follows. A user reported a
      slave that would show an monotonically increase input buffer length,
      shortly after completing a SYNC. Also, `INFO` output showed a single
      blocked client, which could only be the master link. Investigation
      showed that indeed the `BRPOP` command was fed by the master. This
      command can only end up in the stream of write operations when it did
      NOT block, and effectively executed `RPOP`. However, when the key
      involved in the `BRPOP` is expired BEFORE the command is executed, the
      client executing it will block. The client in this case, is the master
      link.
      cb598cdd
  5. 16 2月, 2012 4 次提交
  6. 15 2月, 2012 2 次提交
  7. 14 2月, 2012 6 次提交
  8. 10 2月, 2012 1 次提交
  9. 09 2月, 2012 5 次提交
  10. 08 2月, 2012 4 次提交
  11. 07 2月, 2012 2 次提交
  12. 06 2月, 2012 2 次提交
  13. 05 2月, 2012 3 次提交
  14. 04 2月, 2012 2 次提交
    • A
      This fixes issue #327, is a very complex fix (unfortunately), details: · f6b32c14
      antirez 提交于
      1) sendReplyToClient() now no longer stops transferring data to a single
      client in the case we are out of memory (maxmemory-wise).
      
      2) in processCommand() the idea of we being out of memory is no longer
      the naive zmalloc_used_memory() > server.maxmemory. To say if we can
      accept or not write queries is up to the return value of
      freeMemoryIfNeeded(), that has full control about that.
      
      3) freeMemoryIfNeeded() now does its math without considering output
      buffers size. But at the same time it can't let the output buffers to
      put us too much outside the max memory limit, so at the same time it
      makes sure there is enough effort into delivering the output buffers to
      the slaves, calling the write handler directly.
      
      This three changes are the result of many tests, I found (partially
      empirically) that is the best way to address the problem, but maybe
      we'll find better solutions in the future.
      f6b32c14
    • A
      Use less memory when emitting the protocol, by using more shared objects for... · 355f8591
      antirez 提交于
      Use less memory when emitting the protocol, by using more shared objects for commonly emitted parts of the protocol.
      355f8591
  15. 02 2月, 2012 2 次提交