1. 23 Dec, 2014 8 commits
    • Matt Stancliff's avatar
      Allow forcing non-jemalloc build · d01d4ddc
      Matt Stancliff authored
      d01d4ddc
    • Matt Stancliff's avatar
      Add simple ll2string() tests · 9b343678
      Matt Stancliff authored
      9b343678
    • Matt Stancliff's avatar
      Allow all code tests to run using Redis args · 8febcffd
      Matt Stancliff authored
      Previously, many files had individual main() functions for testing,
      but each required being compiled with their own testing flags.
      That gets difficult when you have 8 different flags you need
      to set just to run all tests (plus, some test files required
      other files to be compiled aaginst them, and it seems some didn't
      build at all without including the rest of Redis).
      
      Now all individual test main() funcions are renamed to a test
      function for the file itself and one global REDIS_TEST define enables
      testing across the entire codebase.
      
      Tests can now be run with:
        - `./redis-server test <test>`
      
        e.g. ./redis-server test ziplist
      
      If REDIS_TEST is not defined, then no tests get included and no
      tests are included in the final redis-server binary.
      8febcffd
    • Matt Stancliff's avatar
      Remove ziplist compiler warnings · 8380655e
      Matt Stancliff authored
      Only happen when compiled with the test define.
      8380655e
    • Matt Stancliff's avatar
      Add DEBUG JEMALLOC INFO · 27937c28
      Matt Stancliff authored
      Uses jemalloc function malloc_stats_print() to return
      stats about what jemalloc has allocated internally.
      27937c28
    • Matt Stancliff's avatar
      Add addReplyBulkSds() function · ad41a7c4
      Matt Stancliff authored
      Refactor a common pattern into one function so we don't
      end up with copy/paste programming.
      ad41a7c4
    • antirez's avatar
      INFO loading stats: three fixes. · 840435ad
      antirez authored
      1. Server unxtime may remain not updated while loading AOF, so ETA is
      not updated correctly.
      
      2. Number of processed byte was not initialized.
      
      3. Possible division by zero condition (likely cause of issue #1932).
      840435ad
    • Matt Stancliff's avatar
      Add 'age' value to SENTINEL INFO-CACHE · 32bba43a
      Matt Stancliff authored
      32bba43a
  2. 21 Dec, 2014 2 commits
  3. 20 Dec, 2014 1 commit
  4. 19 Dec, 2014 1 commit
  5. 18 Dec, 2014 1 commit
    • Alon Diamant's avatar
      Fix: case when SPOP with count>MAXINT, setTypeRandomElements() will get... · 3c8a7558
      Alon Diamant authored
      Fix: case when SPOP with count>MAXINT, setTypeRandomElements() will get negative count argument due to signed/unsigned mismatch.
      
      setTypeRandomElements() now returns unsigned long, and also uses unsigned long for anything related to count of members.
      spopWithCountCommand() now uses unsigned long elements_returned instead of int, for values returned from setTypeRandomElements()
      3c8a7558
  6. 17 Dec, 2014 4 commits
  7. 16 Dec, 2014 1 commit
  8. 15 Dec, 2014 1 commit
  9. 14 Dec, 2014 1 commit
    • Alon Diamant's avatar
      Added <count> parameter to SPOP: · 28802887
      Alon Diamant authored
      spopCommand() now runs spopWithCountCommand() in case the <count> param is found.
      Added intsetRandomMembers() to Intset: Copies N random members from the set into inputted 'values' array. Uses either the Knuth or Floyd sample algos depending on ratio count/size.
      Added setTypeRandomElements() to SET type: Returns a number of random elements from a non empty set. This is a version of setTypeRandomElement() that is modified in order to return multiple entries, using dictGetRandomKeys() and intsetRandomMembers().
      Added tests for SPOP with <count>: unit/type/set, unit/scripting, integration/aof
      --
      Cleaned up code a bit to match with required Redis coding style
      28802887
  10. 13 Dec, 2014 2 commits
  11. 12 Dec, 2014 2 commits
  12. 11 Dec, 2014 9 commits
  13. 10 Dec, 2014 7 commits
    • Pierre-Yves Ritschard's avatar
      b5686c1a
    • antirez's avatar
      Better read-only behavior for expired keys in slaves. · 06e76bc3
      antirez authored
      Slaves key expire is orchestrated by the master. Sometimes the master
      will send the synthesized DEL to expire keys on the slave with a non
      trivial delay (when the key is not accessed, only the incremental expiry
      algorithm will expire it in background).
      
      During that time, a key is logically expired, but slaves still return
      the key if you GET (or whatever) it. This is a bad behavior.
      
      However we can't simply trust the slave view of the key, since we need
      the master to be able to send write commands to update the slave data
      set, and DELs should only happen when the key is expired in the master
      in order to ensure consistency.
      
      However 99.99% of the issues with this behavior is when a client which
      is not a master sends a read only command. In this case we are safe and
      can consider the key as non existing.
      
      This commit does a few changes in order to make this sane:
      
      1. lookupKeyRead() is modified in order to return NULL if the above
      conditions are met.
      2. Calls to lookupKeyRead() in commands actually writing to the data set
      are repliaced with calls to lookupKeyWrite().
      
      There are redundand checks, so for example, if in "2" something was
      overlooked, we should be still safe, since anyway, when the master
      writes the behavior is to don't care about what expireIfneeded()
      returns.
      
      This commit is related to  #1768, #1770, #2131.
      06e76bc3
    • antirez's avatar
      Sentinel: INFO-CACHE comments reworked a bit. · d8158771
      antirez authored
      Changed in order to make them more review friendly, based on the
      experience of reviewing the code myself.
      d8158771
    • antirez's avatar
      Sentinel: INFO-CACHE GCC minior code cleanup. · c83a9172
      antirez authored
      I guess the initial goal of the initialization was to suppress GCC
      warning, but if we have to initialize, we can do it with the base-case
      value instead of NULL which is never retained.
      c83a9172
    • antirez's avatar
      04223216
    • antirez's avatar
      7576a27d
    • antirez's avatar
      test-sds target in Makefile to run sds.c tests. · 0195afae
      antirez authored
      0195afae