1. 22 Feb, 2021 1 commit
    • 杨博东's avatar
      Fix flock cluster config may cause failure to restart after kill -9 (#7674) · e4ab38a3
      杨博东 authored
      
      
      After fork, the child process(redis-aof-rewrite) will get the fd opened
      by the parent process(redis), when redis killed by kill -9, it will not
      graceful exit(call prepareForShutdown()), so redis-aof-rewrite thread may still
      alive, the fd(lock) will still be held by redis-aof-rewrite thread, and
      redis restart will fail to get lock, means fail to start.
      
      This issue was causing failures in the cluster tests in github actions.
      Co-authored-by: default avatarOran Agra <oran@redislabs.com>
      (cherry picked from commit cbaf3c5b)
      e4ab38a3
  2. 27 Oct, 2020 5 commits
    • Oran Agra's avatar
      Allow blocked XREAD on a cluster replica (#7881) · 89c68ba3
      Oran Agra authored
      I suppose that it was overlooked, since till recently none of the blocked commands were readonly.
      
      other changes:
      - add test for the above.
      - add better support for additional (and deferring) clients for
        cluster tests
      - improve a test which left the client in MULTI state.
      
      (cherry picked from commit 216c1106)
      89c68ba3
    • antirez's avatar
      Cluster: introduce data_received field. · 97816fd6
      antirez authored
      We want to send pings and pongs at specific intervals, since our packets
      also contain information about the configuration of the cluster and are
      used for gossip. However since our cluster bus is used in a mixed way
      for data (such as Pub/Sub or modules cluster messages) and metadata,
      sometimes a very busy channel may delay the reception of pong packets.
      So after discussing it in #7216, this commit introduces a new field that
      is not exposed in the cluster, is only an internal information about
      the last time we received any data from a given node: we use this field
      in order to avoid detecting failures, claiming data reception of new
      data from the node is a proof of liveness.
      
      (cherry picked from commit 960186a7)
      97816fd6
    • Oran Agra's avatar
      RESTORE ABSTTL skip expired keys - leak (#7511) · 8cc66985
      Oran Agra authored
      
      (cherry picked from commit 6a814501)
      (cherry picked from commit c4b428a3)
      8cc66985
    • Oran Agra's avatar
      RESTORE ABSTTL won't store expired keys into the db (#7472) · e9c9e4c2
      Oran Agra authored
      Similarly to EXPIREAT with TTL in the past, which implicitly deletes the
      key and return success, RESTORE should not store key that are already
      expired into the db.
      When used together with REPLACE it should emit a DEL to keyspace
      notification and replication stream.
      
      (cherry picked from commit 5977a948)
      (cherry picked from commit 95ba01b5)
      e9c9e4c2
    • Liu Zhen's avatar
      fix clusters mixing accidentally by gossip · ee4696b1
      Liu Zhen authored
      `clusterStartHandshake` will start hand handshake
      and eventually send CLUSTER MEET message, which is strictly prohibited
      in the REDIS CLUSTER SPEC.
      Only system administrator can initiate CLUSTER MEET message.
      Futher, according to the SPEC, rather than IP/PORT pairs, only nodeid
      can be trusted.
      
      (cherry picked from commit 84a7a905)
      ee4696b1
  3. 23 Apr, 2020 1 commit
  4. 05 Mar, 2020 2 commits
  5. 25 Sep, 2019 1 commit
  6. 13 May, 2019 1 commit
  7. 13 Mar, 2019 1 commit
  8. 22 Oct, 2018 2 commits
  9. 03 Oct, 2018 4 commits
  10. 14 Sep, 2018 1 commit
  11. 02 Aug, 2018 2 commits
  12. 30 Jul, 2018 3 commits
  13. 03 Jul, 2018 1 commit
  14. 02 Jul, 2018 1 commit
  15. 24 Jun, 2018 1 commit
  16. 20 Jun, 2018 1 commit
    • Guy Benoish's avatar
      Enhance RESTORE with RDBv9 new features · b5197f1f
      Guy Benoish authored
      RESTORE now supports:
      1. Setting LRU/LFU
      2. Absolute-time TTL
      
      Other related changes:
      1. RDB loading will not override LRU bits when RDB file
         does not contain the LRU opcode.
      2. RDB loading will not set LRU/LFU bits if the server's
         maxmemory-policy does not match.
      b5197f1f
  17. 19 Jun, 2018 1 commit
  18. 12 Jun, 2018 2 commits
  19. 09 Jun, 2018 1 commit
  20. 07 Jun, 2018 2 commits
  21. 06 Jun, 2018 1 commit
  22. 30 Mar, 2018 1 commit
  23. 29 Mar, 2018 1 commit
  24. 14 Mar, 2018 1 commit
    • antirez's avatar
      Cluster: ability to prevent slaves from failing over their masters. · 432bf477
      antirez authored
      This commit, in some parts derived from PR #3041 which is no longer
      possible to merge (because the user deleted the original branch),
      implements the ability of slaves to have a special configuration
      preventing that they try to start a failover when the master is failing.
      
      There are multiple reasons for wanting this, and the feautre was
      requested in issue #3021 time ago.
      
      The differences between this patch and the original PR are the
      following:
      
      1. The flag is saved/loaded on the nodes configuration.
      2. The 'myself' node is now flag-aware, the flag is updated as needed
         when the configuration is changed via CONFIG SET.
      3. The flag name uses NOFAILOVER instead of NO_FAILOVER to be consistent
         with existing NOADDR.
      4. The redis.conf documentation was rewritten.
      
      Thanks to @deep011 for the original patch.
      432bf477
  25. 01 Mar, 2018 1 commit
  26. 27 Feb, 2018 1 commit
    • antirez's avatar
      Cluster: improve crash-recovery safety after failover auth vote. · 533d0e03
      antirez authored
      Add AE_BARRIER to the writable event loop so that slaves requesting
      votes can't be served before we re-enter the event loop in the next
      iteration, so clusterBeforeSleep() will fsync to disk in time.
      Also add the call to explicitly fsync, given that we modified the last
      vote epoch variable.
      533d0e03