1. 29 Jan, 2016 3 commits
  2. 28 Jan, 2016 1 commit
  3. 27 Jan, 2016 2 commits
    • antirez's avatar
      5bbb09ed
    • antirez's avatar
      Sentinel: improve handling of known Sentinel instances. · 751b5666
      antirez authored
      1. Bug #3035 is fixed (NULL pointer access). This was happening with the
         folling set of conditions:
      
      * For some reason one of the Sentinels, let's call it Sentinel_A, changed ID (reconfigured from scratch), but is as the same address at which it used to be.
      
      * Sentinel_A performs a failover and/or has a newer configuration compared to another Sentinel, that we call, Sentinel_B.
      
      * Sentinel_B receives an HELLO message from Sentinel_A, where the address and/or ID is mismatched, but it is reporting a newer configuration for the master they are both monitoring.
      
      2. Sentinels now must have an ID otherwise they are not loaded nor persisted in the configuration. This allows to have conflicting Sentinels with the same address since now the master->sentinels dictionary is indexed by Sentinel ID.
      
      3. The code now detects if a Sentinel is annoucing itself with an IP/port pair already busy (of another Sentinel). The old Sentinel that had the same port/pair is set as having port 0, that means, the address is invalid. We may discover the right address later via HELLO messages.
      751b5666
  4. 26 Jan, 2016 4 commits
  5. 25 Jan, 2016 2 commits
  6. 20 Jan, 2016 2 commits
  7. 19 Jan, 2016 2 commits
    • antirez's avatar
      Minor MIGRATE refactoring. · 83b862a3
      antirez authored
      Centralize cleanup of newargv in a single place.
      Add more comments to help a bit following a complex function.
      
      Related to issue #3016.
      83b862a3
    • antirez's avatar
      More variadic MIGRATE fixes. · f5a1e608
      antirez authored
      Another leak was fixed in the case of syntax error by restructuring the
      allocation strategy for the two dynamic vectors.
      
      We also make sure to always close the cached socket on I/O errors so that
      all the I/O errors are handled the same, even if we had a previously
      queued error of a different kind from the destination server.
      
      Thanks to Kevin McGehee. Related to issue #3016.
      f5a1e608
  8. 18 Jan, 2016 1 commit
    • antirez's avatar
      Various fixes to MIGRATE with multiple keys. · 00d3a40f
      antirez authored
      In issue #3016 Kevin McGehee identified multiple very serious issues in
      the new implementation of MIGRATE. This commit attempts to restructure
      the code in oder to avoid mistakes, an analysis of the new
      implementation is in progress in order to check for possible edge cases.
      00d3a40f
  9. 15 Jan, 2016 4 commits
  10. 14 Jan, 2016 2 commits
    • antirez's avatar
      Cluster: fix setting nodes slaveof pointer to NULL on node release. · fc3ca8ff
      antirez authored
      With this commit we preserve the list of nodes that have .slaveof set
      to the node, even when the node is turned into a slave, and make sure to
      fix the .slaveof pointers to NULL when a node is freed from memory,
      regardless of the fact it's a slave or a master.
      
      Basically we try to remember the logical master in the current
      configuration even if the logical master advertised it as a slave
      already. However we still remember the associations, so that when a node
      is freed we can fix them.
      
      This should fix issue #3002.
      fc3ca8ff
    • antirez's avatar
      Cluster: clarify node->slave may be NULL. · a411d557
      antirez authored
      a411d557
  11. 13 Jan, 2016 1 commit
  12. 12 Jan, 2016 1 commit
  13. 11 Jan, 2016 6 commits
  14. 08 Jan, 2016 5 commits
    • antirez's avatar
      Scripting: handle trailing comments. · f43c794b
      antirez authored
      This fix, provided by Paul Kulchenko (@pkulchenko), allows the Lua
      scripting engine to evaluate statements with a trailing comment like the
      following one:
      
          EVAL "print() --comment" 0
      
      Lua can't parse the above if the string does not end with a newline, so
      now a final newline is always added automatically. This does not change
      the SHA1 of scripts since the SHA1 is computed on the body we pass to
      EVAL, without the other code we add to register the function.
      
      Close #2951.
      f43c794b
    • antirez's avatar
      Allow MIGRATE to always be called on local keys for open slots. · e15e518a
      antirez authored
      Extend the MIGRATE extra freedom to be able to be called in the context
      of the local slot, anytime there is a slot open in one or the other
      direction (importing or migrating). This is useful for redis-trib to fix
      the cluster when it has in an odd state.
      
      Thix fix allows "redis-trib fix" to make its work in certain cases where
      previously an error was reported.
      e15e518a
    • antirez's avatar
    • antirez's avatar
      Lua debugger: support direct calls to SCRIPT DEBUG in redis-cli. · 7c1a5ff3
      antirez authored
      Previously it was possible to activate a debugging session only using
      the --ldb option in redis-cli. Now calling SCRIPT DEBUG can also
      activate the debugging mode without putting the redis-cli in a
      desynchronized state.
      
      Related to #2952.
      7c1a5ff3
    • antirez's avatar
      Lua debugger: fix crash printing nested or deep objects. · a75aa4bf
      antirez authored
      Example of offending code:
      
      > script debug yes
      OK
      > eval "local a = {1} a[1] = a\nprint(a)" 0
      1) * Stopped at 1, stop reason = step over
      2) -> 1   local a = {1} a[1] = a
      > next
      1) * Stopped at 2, stop reason = step over
      2) -> 2   print(a)
      > print
      
      ... server crash ...
      
      Close #2955.
      a75aa4bf
  15. 07 Jan, 2016 3 commits
    • antirez's avatar
      Another typo in protected mode error message. · 1e7a8f82
      antirez authored
      1e7a8f82
    • antirez's avatar
      Fix protected mode error message typo. · 08c7bba3
      antirez authored
      08c7bba3
    • antirez's avatar
      New security feature: Redis protected mode. · edd4d555
      antirez authored
      An exposed Redis instance on the internet can be cause of serious
      issues. Since Redis, by default, binds to all the interfaces, it is easy
      to forget an instance without any protection layer, for error.
      
      Protected mode try to address this feature in a soft way, providing a
      layer of protection, but giving clues to Redis users about why the
      server is not accepting connections.
      
      When protected mode is enabeld (the default), and if there are no
      minumum hints about the fact the server is properly configured (no
      "bind" directive is used in order to restrict the server to certain
      interfaces, nor a password is set), clients connecting from external
      intefaces are refused with an error explaining what to do in order to
      fix the issue.
      
      Clients connecting from the IPv4 and IPv6 lookback interfaces are still
      accepted normally, similarly Unix domain socket connections are not
      restricted in any way.
      edd4d555
  16. 06 Jan, 2016 1 commit
    • antirez's avatar
      Cluster: don't send -ASK to MIGRATE. · 00d637f2
      antirez authored
      For non existing keys, we don't want to send -ASK redirections to
      MIGRATE, since when moving slots from the migrating node to the
      importing node, we want just to ignore keys that are no longer there.
      They may be expired or deleted between the GETKEYSINSLOT call and the
      MIGRATE call. Otherwise this causes an error during migrations with
      redis-trib (or equivalent cluster management tools).
      00d637f2