1. 04 Nov, 2019 1 commit
  2. 23 Oct, 2019 1 commit
  3. 27 Sep, 2019 1 commit
  4. 30 Jul, 2019 1 commit
  5. 22 Jul, 2019 2 commits
    • antirez's avatar
      Move signalFlushedDb() into a better place. · 436d02dd
      antirez authored
      Now that the call also invalidates client side caching slots, it is
      important that after an internal flush operation we both send the
      notifications to the clients and, at the same time, are able to reclaim
      the memory of the tracking table. This may even fix a few edge cases
      related to MULTI/EXEC + WATCH during resync, not sure, but in general
      looks more correct.
      436d02dd
    • antirez's avatar
      Client side caching: call the invalidation functions always. · 842b44dc
      antirez authored
      Otherwise what happens is that the tracking table will never get garbage
      collected if there are no longer clients with tracking enabled.
      Now the invalidation function immediately checks if there is any table
      allocated, otherwise it returns ASAP, so the overhead when the feature
      is not used should be near zero.
      842b44dc
  6. 17 Jul, 2019 2 commits
    • Oran Agra's avatar
      Module API for Forking · 56258c6b
      Oran Agra authored
      * create module API for forking child processes.
      * refactor duplicate code around creating and tracking forks by AOF and RDB.
      * child processes listen to SIGUSR1 and dies exitFromChild in order to
        eliminate a valgrind warning of unhandled signal.
      * note that BGSAVE error reply has changed.
      
      valgrind error is:
        Process terminating with default action of signal 10 (SIGUSR1)
      56258c6b
    • zhaozhao.zz's avatar
  7. 08 Jul, 2019 2 commits
    • Oran Agra's avatar
      diskless replication on slave side (don't store rdb to file), plus some other related fixes · 2de544cf
      Oran Agra authored
      The implementation of the diskless replication was currently diskless only on the master side.
      The slave side was still storing the received rdb file to the disk before loading it back in and parsing it.
      
      This commit adds two modes to load rdb directly from socket:
      1) when-empty
      2) using "swapdb"
      the third mode of using diskless slave by flushdb is risky and currently not included.
      
      other changes:
      --------------
      distinguish between aof configuration and state so that we can re-enable aof only when sync eventually
      succeeds (and not when exiting from readSyncBulkPayload after a failed attempt)
      also a CONFIG GET and INFO during rdb loading would have lied
      
      When loading rdb from the network, don't kill the server on short read (that can be a network error)
      
      Fix rdb check when performed on preamble AOF
      
      tests:
      run replication tests for diskless slave too
      make replication test a bit more aggressive
      Add test for diskless load swapdb
      2de544cf
    • Angus Pearson's avatar
  8. 03 Jul, 2019 1 commit
  9. 10 Jun, 2019 1 commit
  10. 02 Jun, 2019 1 commit
    • Oran Agra's avatar
      make redis purge jemalloc after flush, and enable background purging thread · 09f99c2a
      Oran Agra authored
      jemalloc 5 doesn't immediately release memory back to the OS, instead there's a decaying
      mechanism, which doesn't work when there's no traffic (no allocations).
      this is most evident if there's no traffic after flushdb, the RSS will remain high.
      
      1) enable jemalloc background purging
      2) explicitly purge in flushdb
      09f99c2a
  11. 22 May, 2019 1 commit
    • Angus Pearson's avatar
      Implement `SCAN cursor [TYPE type]` modifier suggested in issue #6107. · bf963253
      Angus Pearson authored
      Add tests to check basic functionality of this optional keyword, and also tested with
      a module (redisgraph). Checked quickly with valgrind, no issues.
      
      Copies name the type name canonicalisation code from `typeCommand`, perhaps this would
      be better factored out to prevent the two diverging and both needing to be edited to
      add new `OBJ_*` types, but this is a little fiddly with C strings.
      
      The [redis-doc](https://github.com/antirez/redis-doc/blob/master/commands.json) repo
      will need to be updated with this new arg if accepted.
      
      A quirk to be aware of here is that the GEO commands are backed by zsets not their own
      type, so they're not distinguishable from other zsets.
      
      Additionally, for sparse types this has the same behaviour as `MATCH` in that it may
      return many empty results before giving something, even for large `COUNT`s.
      bf963253
  12. 21 Mar, 2019 2 commits
  13. 19 Mar, 2019 1 commit
  14. 19 Feb, 2019 1 commit
  15. 21 Jan, 2019 3 commits
  16. 09 Jan, 2019 2 commits
  17. 31 Dec, 2018 1 commit
  18. 06 Dec, 2018 1 commit
  19. 24 Oct, 2018 1 commit
  20. 20 Oct, 2018 1 commit
  21. 19 Oct, 2018 2 commits
  22. 31 Jul, 2018 1 commit
  23. 25 Jul, 2018 3 commits
  24. 03 Jul, 2018 1 commit
  25. 28 Jun, 2018 1 commit
  26. 21 Jun, 2018 1 commit
  27. 18 Jun, 2018 2 commits
    • antirez's avatar
      Streams: fix xreadGetKeys() for correctness. · 20766608
      antirez authored
      The old version could not handle the fact that "STREAMS" is a valid key
      name for streams. Now we really try to parse the command like the
      command implementation would do.
      
      Related to #5028 and 4857.
      20766608
    • antirez's avatar
      Streams: fix xreadGetKeys() buffer overflow. · a0b27dae
      antirez authored
      The loop allocated a buffer for the right number of keys positions, then
      overflowed it going past the limit.
      
      Related to #4857 and cause of the memory violation seen in #5028.
      a0b27dae
  28. 14 Jun, 2018 1 commit
  29. 13 Jun, 2018 1 commit