1. 29 May, 2015 3 commits
  2. 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
  3. 19 May, 2015 2 commits
  4. 15 May, 2015 5 commits
  5. 07 May, 2015 1 commit
  6. 05 May, 2015 2 commits
  7. 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
  8. 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
  9. 27 Apr, 2015 1 commit
  10. 01 Apr, 2015 7 commits
  11. 30 Mar, 2015 1 commit
  12. 27 Mar, 2015 2 commits
  13. 26 Mar, 2015 1 commit
  14. 24 Mar, 2015 4 commits
    • antirez's avatar
      Redis 2.9.106 (3.0.0 Release Candidate 6) · 2b5cf6bf
      antirez authored
      2b5cf6bf
    • antirez's avatar
      Replication: disconnect blocked clients when switching to slave role. · 7e78ab4b
      antirez authored
      Bug as old as Redis and blocking operations. It's hard to trigger since
      only happens on instance role switch, but the results are quite bad
      since an inconsistency between master and slave is created.
      
      How to trigger the bug is a good description of the bug itself.
      
      1. Client does "BLPOP mylist 0" in master.
      2. Master is turned into slave, that replicates from New-Master.
      3. Client does "LPUSH mylist foo" in New-Master.
      4. New-Master propagates write to slave.
      5. Slave receives the LPUSH, the blocked client get served.
      
      Now Master "mylist" key has "foo", Slave "mylist" key is empty.
      
      Highlights:
      
      * At step "2" above, the client remains attached, basically escaping any
        check performed during command dispatch: read only slave, in that case.
      * At step "5" the slave (that was the master), serves the blocked client
        consuming a list element, which is not consumed on the master side.
      
      This scenario is technically likely to happen during failovers, however
      since Redis Sentinel already disconnects clients using the CLIENT
      command when changing the role of the instance, the bug is avoided in
      Sentinel deployments.
      
      Closes #2473.
      7e78ab4b
    • antirez's avatar
      Cluster: redirection refactoring + handling of blocked clients. · 3468cd36
      antirez authored
      There was a bug in Redis Cluster caused by clients blocked in a blocking
      list pop operation, for keys no longer handled by the instance, or
      in a condition where the cluster became down after the client blocked.
      
      A typical situation is:
      
      1) BLPOP <somekey> 0
      2) <somekey> hash slot is resharded to another master.
      
      The client will block forever int this case.
      
      A symmentrical non-cluster-specific bug happens when an instance is
      turned from master to slave. In that case it is more serious since this
      will desynchronize data between slaves and masters. This other bug was
      discovered as a side effect of thinking about the bug explained and
      fixed in this commit, but will be fixed in a separated commit.
      3468cd36
    • superlogical's avatar
      d1b5c5de
  15. 22 Mar, 2015 1 commit