1. 29 Jun, 2015 1 commit
  2. 11 Jun, 2015 5 commits
    • linfangrong's avatar
      Update t_zset.c · d4a7c9e1
      linfangrong authored
      d4a7c9e1
    • antirez's avatar
      Use best effort address binding to connect to the master · 4e8759c6
      antirez authored
      We usually want to reach the master using the address of the interface
      Redis is bound to (via the "bind" config option). That's useful since
      the master will get (and publish) the slave address getting the peer
      name of the incoming socket connection from the slave.
      
      However, when this is not possible, for example because the slave is
      bound to the loopback interface but repliaces from a master accessed via
      an external interface, we want to still connect with the master even
      from a different interface: in this case it is not really important that
      the master will provide any other address, while it is vital to be able
      to replicate correctly.
      
      Related to issues #2609 and #2612.
      4e8759c6
    • antirez's avatar
      anet.c: new API anetTcpNonBlockBestEffortBindConnect() · a8d7f00e
      antirez authored
      This performs a best effort source address binding attempt. If it is
      possible to bind the local address and still have a successful
      connect(), then this socket is returned. Otherwise the call is retried
      without source address binding attempt.
      
      Related to issues #2609 and #2612.
      a8d7f00e
    • antirez's avatar
      anetTcpGenericConnect(), jump to error not end on error · af8a9de6
      antirez authored
      Two code paths jumped to the "ok, return the socket to the user" code
      path to handle error conditions.
      
      Related to issues #2609 and #2612.
      af8a9de6
    • antirez's avatar
      Don't try to bind the source address for MIGRATE · d815289d
      antirez authored
      Related to issues #2609 and #2612.
      d815289d
  3. 04 Jun, 2015 2 commits
  4. 03 Jun, 2015 3 commits
  5. 29 May, 2015 8 commits
  6. 25 May, 2015 1 commit
    • therealbill's avatar
      adding a sentinel command: "flushconfig" · e252e9f2
      therealbill authored
      This new command triggers a config flush to save the in-memory config to
      disk. This is useful for cases of a configuration management system or a
      package manager wiping out your sentinel config while the process is
      still running - and has not yet been restarted. It can also be useful
      for scripting a backup and migrate or clone of a running sentinel.
      e252e9f2
  7. 19 May, 2015 2 commits
  8. 15 May, 2015 5 commits
  9. 07 May, 2015 1 commit
  10. 05 May, 2015 2 commits
  11. 04 May, 2015 8 commits
    • FuGangqiang's avatar
      sdsfree x and y · e213c408
      FuGangqiang authored
      e213c408
    • FuGangqiang's avatar
      fix doc example · 5674656d
      FuGangqiang authored
      5674656d
    • FuGangqiang's avatar
      fix typo · 35d71b1f
      FuGangqiang authored
      35d71b1f
    • Itamar Haber's avatar
      update copyright year · 66378628
      Itamar Haber authored
      66378628
    • therealbill's avatar
      Making sentinel flush config on +slave · b065f444
      therealbill authored
      Originally, only the +slave event which occurs when a slave is
      reconfigured during sentinelResetMasterAndChangeAddress triggers a flush
      of the config to disk.  However, newly discovered slaves don't
      apparently trigger this flush but do trigger the +slave event issuance.
      
      So if you start up a sentinel, add a master, then add a slave to the
      master (as a way to reproduce it) you'll see the +slave event issued,
      but the sentinel config won't be updated with the known-slave entry.
      
      This change makes sentinel do the flush of the config if a new slave is
      deteted in sentinelRefreshInstanceInfo.
      b065f444
    • antirez's avatar
      Sentinel: remove useless sentinelFlushConfig() call · bd99b26b
      antirez authored
      To rewrite the config in the loop that adds slaves back after a master
      reset, in order to handle switching to another master, is useless: it
      just adds latency since there is an fsync call in the inner loop,
      without providing any additional guarantee, but the contrary, since if
      after the first loop iteration the server crashes we end with just a
      single slave entry losing all the other informations.
      
      It is wiser to rewrite the config at the end when the full new
      state is configured.
      bd99b26b
    • Yossi Gottlieb's avatar
    • clark.kang's avatar
      fix sentinel memory leak · 88d58661
      clark.kang authored
      88d58661
  12. 28 Apr, 2015 1 commit
    • antirez's avatar
      Fix Sentinel memory leak (hiredis bug) · 315e3b14
      antirez authored
      This fixes issue #2535, that was actually an hiredis library bug (I
      submitted an issue and fix to the redis/hiredis repo as well).
      
      When an asynchronous hiredis connection subscribes to a Pub/Sub channel
      and gets an error, and in other related conditions, the function
      redisProcessCallbacks() enters a code path where the link is
      disconnected, however the function returns before freeing the allocated
      reply object. This causes a memory leak. The memory leak was trivial to
      trigger in Redis Sentinel, which uses hiredis, every time we tried to
      subscribe to an instance that required a password, in case the Sentinel
      was configured either with the wrong password or without password at
      all. In this case, the -AUTH error caused the leaking code path to be
      executed.
      
      It was verified with Valgrind that after this change the leak no longer
      happens in Sentinel with a misconfigured authentication password.
      315e3b14
  13. 27 Apr, 2015 1 commit