1. 21 Jun, 2014 1 commit
    • antirez's avatar
      CLIENT LIST speedup via peerid caching + smart allocation. · d8d415e7
      antirez authored
      This commit adds peer ID caching in the client structure plus an API
      change and the use of sdsMakeRoomFor() in order to improve the
      reallocation pattern to generate the CLIENT LIST output.
      
      Both the changes account for a very significant speedup.
      d8d415e7
  2. 09 Jun, 2014 1 commit
  3. 06 Jun, 2014 1 commit
  4. 26 May, 2014 1 commit
  5. 09 May, 2014 1 commit
  6. 10 Mar, 2014 1 commit
    • antirez's avatar
      DEBUG ERROR implemented. · eb9e1526
      antirez authored
      The new "error" subcommand of the DEBUG command can reply with an user
      selected error, specified as its sole argument:
      
          DEBUG ERROR "LOADING please wait..."
      
      The error is generated just prefixing the command argument with a "-"
      character, and replacing newlines with spaces (since error replies can't
      include newlines).
      
      The goal of the command is to help in Client libraries unit tests by
      making simple to simulate a command call triggering a given error.
      eb9e1526
  7. 10 Dec, 2013 1 commit
    • antirez's avatar
      dict.c: added optional callback to dictEmpty(). · b6610a56
      antirez authored
      Redis hash table implementation has many non-blocking features like
      incremental rehashing, however while deleting a large hash table there
      was no way to have a callback called to do some incremental work.
      
      This commit adds this support, as an optiona callback argument to
      dictEmpty() that is currently called at a fixed interval (one time every
      65k deletions).
      b6610a56
  8. 27 Aug, 2013 2 commits
  9. 26 Jun, 2013 1 commit
    • YAMAMOTO Takashi's avatar
      use nanosleep instead of usleep · 30f3ae03
      YAMAMOTO Takashi authored
      SUSv3 says that:
      	The useconds argument shall be less than one million. If the value of
      	useconds is 0, then the call has no effect.
      and actually NetBSD's implementation rejects such a value with EINVAL.
      use nanosleep which has no such a limitation instead.
      30f3ae03
  10. 19 Jun, 2013 1 commit
    • antirez's avatar
      Fix logStackTrace() when logging to stdout. · 449ec38f
      antirez authored
      When the semantics changed from logfile = NULL to logfile = "" to log
      into standard output, no proper change was made to logStackTrace() to
      make it able to work with the new setup.
      
      This commit fixes the issue.
      449ec38f
  11. 04 Jun, 2013 1 commit
  12. 28 Mar, 2013 2 commits
  13. 27 Feb, 2013 1 commit
  14. 13 Feb, 2013 1 commit
  15. 21 Jan, 2013 1 commit
  16. 19 Jan, 2013 1 commit
    • guiquanz's avatar
      Fixed many typos. · 1caf0939
      guiquanz authored
      Conflicts fixed, mainly because 2.8 has no cluster support / files:
      	00-RELEASENOTES
      	src/cluster.c
      	src/crc16.c
      	src/redis-trib.rb
      	src/redis.h
      1caf0939
  17. 14 Dec, 2012 1 commit
    • antirez's avatar
      serverCron() frequency is now a runtime parameter (was REDIS_HZ). · a6d117b6
      antirez authored
      REDIS_HZ is the frequency our serverCron() function is called with.
      A more frequent call to this function results into less latency when the
      server is trying to handle very expansive background operations like
      mass expires of a lot of keys at the same time.
      
      Redis 2.4 used to have an HZ of 10. This was good enough with almost
      every setup, but the incremental key expiration algorithm was working a
      bit better under *extreme* pressure when HZ was set to 100 for Redis
      2.6.
      
      However for most users a latency spike of 30 milliseconds when million
      of keys are expiring at the same time is acceptable, on the other hand a
      default HZ of 100 in Redis 2.6 was causing idle instances to use some
      CPU time compared to Redis 2.4. The CPU usage was in the order of 0.3%
      for an idle instance, however this is a shame as more energy is consumed
      by the server, if not important resources.
      
      This commit introduces HZ as a runtime parameter, that can be queried by
      INFO or CONFIG GET, and can be modified with CONFIG SET. At the same
      time the default frequency is set back to 10.
      
      In this way we default to a sane value of 10, but allows users to
      easily switch to values up to 500 for near real-time applications if
      needed and if they are willing to pay this small CPU usage penalty.
      a6d117b6
  18. 29 Nov, 2012 2 commits
    • antirez's avatar
      Introduced the Build ID in INFO and --version output. · 3b71404d
      antirez authored
      The idea is to be able to identify a build in a unique way, so for
      instance after a bug report we can recognize that the build is the one
      of a popular Linux distribution and perform the debugging in the same
      environment.
      3b71404d
    • antirez's avatar
      On crash memory test rewrote so that it actaully works. · cd99c14e
      antirez authored
      1) We no longer test location by location, otherwise the CPU write cache
      completely makes our business useless.
      2) We still need a memory test that operates in steps from the first to
      the last location in order to never hit the cache, but that is still
      able to retain the memory content.
      
      This was tested using a Linux box containing a bad memory module with a
      zingle bit error (always zero).
      
      So the final solution does has an error propagation step that is:
      
      1) Invert bits at every location.
      2) Swap adiacent locations.
      3) Swap adiacent locations again.
      4) Invert bits at every location.
      5) Swap adiacent locations.
      6) Swap adiacent locations again.
      
      Before and after these steps, and after step 4, a CRC64 checksum is computed.
      If the three CRC64 checksums don't match, a memory error was detected.
      cd99c14e
  19. 28 Nov, 2012 2 commits
  20. 22 Nov, 2012 2 commits
    • antirez's avatar
      Make bio.c threads killable ASAP if needed. · dff1ec4a
      antirez authored
      We use this new bio.c feature in order to stop our I/O threads if there
      is a memory test to do on crash. In this case we don't want anything
      else than the main thread to run, otherwise the other threads may mess
      with the heap and the memory test will report a false positive.
      dff1ec4a
    • antirez's avatar
      Fast memory test on Redis crash. · d4b5c480
      antirez authored
      d4b5c480
  21. 08 Nov, 2012 1 commit
  22. 24 Aug, 2012 1 commit
    • antirez's avatar
      Better Out of Memory handling. · 5de75120
      antirez authored
      The previous implementation of zmalloc.c was not able to handle out of
      memory in an application-specific way. It just logged an error on
      standard error, and aborted.
      
      The result was that in the case of an actual out of memory in Redis
      where malloc returned NULL (In Linux this actually happens under
      specific overcommit policy settings and/or with no or little swap
      configured) the error was not properly logged in the Redis log.
      
      This commit fixes this problem, fixing issue #509.
      Now the out of memory is properly reported in the Redis log and a stack
      trace is generated.
      
      The approach used is to provide a configurable out of memory handler
      to zmalloc (otherwise the default one logging the event on the
      standard output is used).
      5de75120
  23. 11 Jun, 2012 1 commit
    • antirez's avatar
      Dump ziplist hex value on failed assertion. · 0b8441c1
      antirez authored
      The ziplist -> hashtable conversion code is triggered every time an hash
      value must be promoted to a full hash table because the number or size of
      elements reached the threshold.
      
      If a problem in the ziplist causes the same field to be present
      multiple times, the assertion of successful addition of the element
      inside the hash table will fail, crashing server with a failed
      assertion, but providing little information about the problem.
      
      This code adds a new logging function to perform the hex dump of binary
      data, and makes sure that the ziplist -> hashtable conversion code uses
      this new logging facility to dump the content of the ziplist when the
      assertion fails.
      
      This change was originally made in order to investigate issue #547.
      0b8441c1
  24. 14 May, 2012 1 commit
    • antirez's avatar
      Impovements for: Redis timer, hashes rehashing, keys collection. · a8a981a8
      antirez authored
      A previous commit introduced REDIS_HZ define that changes the frequency
      of calls to the serverCron() Redis function. This commit improves
      different related things:
      
      1) Software watchdog: now the minimal period can be set according to
      REDIS_HZ. The minimal period is two times the timer period, that is:
      
          (1000/REDIS_HZ)*2 milliseconds
      
      2) The incremental rehashing is now performed in the expires dictionary
      as well.
      
      3) The activeExpireCycle() function was improved in different ways:
      
      - Now it checks if it already used too much time using microseconds
        instead of milliseconds for better precision.
      - The time limit is now calculated correctly, in the previous version
        the division was performed before of the multiplication resulting in
        a timelimit of 0 if HZ was big enough.
      - Databases with less than 1% of buckets fill in the hash table are
        skipped, because getting random keys is too expensive in this
        condition.
      
      4) tryResizeHashTables() is now called at every timer call, we need to
         match the number of calls we do to the expired keys colleciton cycle.
      
      5) REDIS_HZ was raised to 100.
      a8a981a8
  25. 27 Apr, 2012 1 commit
  26. 24 Apr, 2012 1 commit
    • antirez's avatar
      Fix and refactoring of code used to get registers on crash. · 38b60dea
      antirez authored
      This fixes compilation on FreeBSD (and possibly other systems) by
      not using ucontext_t at all if HAVE_BACKTRACE is not defined.
      Also the ifdefs to get the registers are modified to explicitly test for the
      operating system in the first level, and the arch in the second level
      of nesting.
      38b60dea
  27. 05 Apr, 2012 1 commit
  28. 28 Mar, 2012 4 commits
  29. 27 Mar, 2012 1 commit
  30. 18 Mar, 2012 1 commit
  31. 21 Feb, 2012 1 commit
  32. 08 Feb, 2012 1 commit