1. 19 12月, 2013 1 次提交
    • A
      CONFIG REWRITE: don't wipe unknown options. · ddd529bc
      antirez 提交于
      With this commit options not explicitly rewritten by CONFIG REWRITE are
      not touched at all. These include new options that may not have support
      for REWRITE, and other special cases like rename-command and include.
      ddd529bc
  2. 13 12月, 2013 3 次提交
    • A
      Makefile.dep updated. · 33f6f35f
      antirez 提交于
      33f6f35f
    • A
      SDIFF iterator misuse fixed in diff algorithm #1. · 993e0ede
      antirez 提交于
      The bug could be easily triggered by:
      
          SADD foo a b c 1 2 3 4 5 6
          SDIFF foo foo
      
      When the key was the same in two sets, an unsafe iterator was used to
      check existence of elements in the same set we were iterating.
      Usually this would just result into a wrong output, however with the
      dict.c API misuse protection we have in place, the result was actually
      an assertion failed that was triggered by the CI test, while creating
      random datasets for the "MASTER and SLAVE consistency" test.
      993e0ede
    • A
      Sentinel: dead code removed. · 2507e366
      antirez 提交于
      2507e366
  3. 12 12月, 2013 2 次提交
  4. 11 12月, 2013 8 次提交
  5. 10 12月, 2013 2 次提交
    • A
      Slaves heartbeat while loading RDB files. · 75bf5a4a
      antirez 提交于
      Starting with Redis 2.8 masters are able to detect timed out slaves,
      while before 2.8 only slaves were able to detect a timed out master.
      
      Now that timeout detection is bi-directional the following problem
      happens as described "in the field" by issue #1449:
      
      1) Master and slave setup with big dataset.
      2) Slave performs the first synchronization, or a full sync
         after a failed partial resync.
      3) Master sends the RDB payload to the slave.
      4) Slave loads this payload.
      5) Master detects the slave as timed out since does not receive back the
         REPLCONF ACK acknowledges.
      
      Here the problem is that the master has no way to know how much the
      slave will take to load the RDB file in memory. The obvious solution is
      to use a greater replication timeout setting, but this is a shame since
      for the 0.1% of operation time we are forced to use a timeout that is
      not what is suited for 99.9% of operation time.
      
      This commit tries to fix this problem with a solution that is a bit of
      an hack, but that modifies little of the replication internals, in order
      to be back ported to 2.8 safely.
      
      During the RDB loading time, we send the master newlines to avoid
      being sensed as timed out. This is the same that the master already does
      while saving the RDB file to still signal its presence to the slave.
      
      The single newline is used because:
      
      1) It can't desync the protocol, as it is only transmitted all or
      nothing.
      2) It can be safely sent while we don't have a client structure for the
      master or in similar situations just with write(2).
      75bf5a4a
    • A
      Handle inline requested terminated with just \n. · 8d0083ba
      antirez 提交于
      8d0083ba
  6. 06 12月, 2013 2 次提交
    • A
      Sentinel: fix reported role info sampling. · fba0b23e
      antirez 提交于
      The way the role change was recoded was not sane and too much
      convoluted, causing the role information to be not always updated.
      
      This commit fixes issue #1445.
      fba0b23e
    • A
      Sentinel: fix reported role fields when master is reset. · dceaca1f
      antirez 提交于
      When there is a master address switch, the reported role must be set to
      master so that we have a chance to re-sample the INFO output to check if
      the new address is reporting the right role.
      
      Otherwise if the role was wrong, it will be sensed as wrong even after
      the address switch, and for enough time according to the role change
      time, for Sentinel consider the master SDOWN.
      
      This fixes isue #1446, that describes the effects of this bug in
      practice.
      dceaca1f
  7. 05 12月, 2013 1 次提交
  8. 03 12月, 2013 2 次提交
  9. 02 12月, 2013 3 次提交
    • A
      Redis 2.8.2. · 4d650a3b
      antirez 提交于
      4d650a3b
    • A
      Sentinel: don't write HZ when flushing config. · dd0ac4ac
      antirez 提交于
      See issue #1419.
      dd0ac4ac
    • A
      Sentinel: better time desynchronization. · 75347ada
      antirez 提交于
      Sentinels are now desynchronized in a better way changing the time
      handler frequency between 10 and 20 HZ. This way on average a
      desynchronization of 25 milliesconds is produced that should be larger
      enough compared to network latency, avoiding most split-brain condition
      during the vote.
      
      Now that the clocks are desynchronized, to have larger random delays when
      performing operations can be easily achieved in the following way.
      Take as example the function that starts the failover, that is
      called with a frequency between 10 and 20 HZ and will start the
      failover every time there are the conditions. By just adding as an
      additional condition something like rand()%4 == 0, we can amplify the
      desynchronization between Sentinel instances easily.
      
      See issue #1419.
      75347ada
  10. 28 11月, 2013 4 次提交
  11. 26 11月, 2013 1 次提交
  12. 25 11月, 2013 3 次提交
  13. 22 11月, 2013 1 次提交
  14. 21 11月, 2013 7 次提交