1. 11 Dec, 2014 2 commits
  2. 03 Dec, 2014 1 commit
    • antirez's avatar
      Network bandwidth tracking + refactoring. · 1b732c09
      antirez authored
      Track bandwidth used by clients and replication (but diskless
      replication is not tracked since the actual transfer happens in the
      child process).
      
      This includes a refactoring that makes tracking new instantaneous
      metrics simpler.
      1b732c09
  3. 02 Dec, 2014 1 commit
  4. 11 Nov, 2014 2 commits
    • antirez's avatar
      Diskless SYNC: fix RDB EOF detection. · bb7fea0d
      antirez authored
      RDB EOF detection was relying on the final part of the RDB transfer to
      be a magic 40 bytes EOF marker. However as the slave is put online
      immediately, and because of sockets timeouts, the replication stream is
      actually contiguous with the RDB file.
      
      This means that to detect the EOF correctly we should either:
      
      1) Scan all the stream searching for the mark. Sucks CPU-wise.
      2) Start to send the replication stream only after an acknowledge.
      3) Implement a proper chunked encoding.
      
      For now solution "2" was picked, so the master does not start to send
      ASAP the stream of commands in the case of diskless replication. We wait
      for the first REPLCONF ACK command from the slave, that certifies us
      that the slave correctly loaded the RDB file and is ready to get more
      data.
      bb7fea0d
    • Pierre-Yves Ritschard's avatar
      Support daemon supervision by upstart or systemd · bc1a3b96
      Pierre-Yves Ritschard authored
      Both upstart and systemd provide a way for daemons to
      be supervised, as well as a mechanism for them to
      signal their readyness status.
      
      This patch provides compatibility with this functionality while
      not interfering with other methods.
      
      With this, it will be possible to use `expect stop` with upstart
      and `Type=notify` with systemd.
      
      A more detailed explanation of the mechanism can be found here:
      http://spootnik.org/entries/2014/11/09_pid-tracking-in-modern-init-systems.html
      bc1a3b96
  5. 27 Oct, 2014 2 commits
  6. 16 Oct, 2014 3 commits
  7. 14 Oct, 2014 2 commits
  8. 08 Oct, 2014 1 commit
    • antirez's avatar
      Define different types of RDB childs. · 2df8341c
      antirez authored
      We need to remember what is the saving strategy of the current RDB child
      process, since the configuration may be modified at runtime via CONFIG
      SET and still we'll need to understand, when the child exists, what to
      do and for what goal the process was initiated: to create an RDB file
      on disk or to write stuff directly to slave's sockets.
      2df8341c
  9. 29 Sep, 2014 1 commit
  10. 17 Sep, 2014 1 commit
  11. 08 Sep, 2014 1 commit
  12. 13 Aug, 2014 1 commit
  13. 12 Aug, 2014 1 commit
  14. 08 Aug, 2014 1 commit
  15. 07 Aug, 2014 2 commits
  16. 16 Jul, 2014 1 commit
    • antirez's avatar
      PubSub clients refactoring and new PUBSUB flag. · 59cf0824
      antirez authored
      The code tested many times if a client had active Pub/Sub subscriptions
      by checking the length of a list and dictionary where the patterns and
      channels are stored. This was substituted with a client flag called
      REDIS_PUBSUB that is simpler to test for. Moreover in order to manage
      this flag some code was refactored.
      
      This commit is believed to have no effects in the behavior of the
      server.
      59cf0824
  17. 08 Jul, 2014 1 commit
  18. 04 Jul, 2014 1 commit
  19. 02 Jul, 2014 1 commit
  20. 01 Jul, 2014 4 commits
    • antirez's avatar
      Latency monitor turned off by default. · b809676a
      antirez authored
      It is not a good idea to bloat the code with gettimeofday() calls if the
      instance is working well, and turning monitoring on at runtime is a
      joke.
      b809676a
    • antirez's avatar
      LATENCY SAMPLES implemented. · 551bee86
      antirez authored
      551bee86
    • antirez's avatar
      Latency monitor: collect slow commands. · 8612e6de
      antirez authored
      We introduce the distinction between slow and fast commands since those
      are two different sources of latency. An O(1) or O(log N) command without
      side effects (can't trigger deletion of large objects as a side effect of
      its execution) if delayed is a symptom of inherent latency of the system.
      
      A non-fast command (commands that may run large O(N) computations) if
      delayed may just mean that the user is executing slow operations.
      
      The advices LATENCY should provide in this two different cases are
      different, so we log the two classes of commands in a separated way.
      8612e6de
    • antirez's avatar
      Latency monitor: basic samples collection. · d7a07a20
      antirez authored
      d7a07a20
  21. 27 Jun, 2014 2 commits
    • antirez's avatar
      COMMANDS command renamed COMMAND. · 7fd0149d
      antirez authored
      7fd0149d
    • Matt Stancliff's avatar
      Cluster: Add COMMANDS command · 183458f7
      Matt Stancliff authored
      COMMANDS returns a nested multibulk reply for each
      command in the command table.  The reply for each
      command contains:
        - command name
        - arity
        - array of command flags
        - start key position
        - end key position
        - key offset step
        - optional: if the keys are not deterministic and
          Redis uses an internal key evaluation function,
          the 6th field appears and is defined as a status
          reply of: REQUIRES ARGUMENT PARSING
      
      Cluster clients need to know where the keys are in each
      command to implement proper routing to cluster nodes.
      
      Redis commands can have multiple keys, keys at offset steps, or other
      issues where you can't always assume the first element after
      the command name is the cluster routing key.
      
      Using the information exposed by COMMANDS, client implementations
      can have live, accurate key extraction details for all commands.
      
      Also implements COMMANDS INFO [commands...] to return only a
      specific set of commands instead of all 160+ commands live in Redis.
      183458f7
  22. 26 Jun, 2014 1 commit
  23. 23 Jun, 2014 1 commit
  24. 16 Jun, 2014 3 commits
    • antirez's avatar
      New features for CLIENT KILL. · e7affd26
      antirez authored
      e7affd26
    • antirez's avatar
      Assign an unique non-repeating ID to each new client. · f26f79ea
      antirez authored
      This will be used by CLIENT KILL and is also a good way to ensure a
      given client is still the same across CLIENT LIST calls.
      
      The output of CLIENT LIST was modified to include the new ID, but this
      change is considered to be backward compatible as the API does not imply
      you can do positional parsing, since each filed as a different name.
      f26f79ea
    • antirez's avatar
      Client types generalized. · 56d26c23
      antirez authored
      Because of output buffer limits Redis internals had this idea of type of
      clients: normal, pubsub, slave. It is possible to set different output
      buffer limits for the three kinds of clients.
      
      However all the macros and API were named after output buffer limit
      classes, while the idea of a client type is a generic one that can be
      reused.
      
      This commit does two things:
      
      1) Rename the API and defines with more general names.
      2) Change the class of clients executing the MONITOR command from "slave"
         to "normal".
      
      "2" is a good idea because you want to have very special settings for
      slaves, that are not a good idea for MONITOR clients that are instead
      normal clients even if they are conceptually slave-alike (since it is a
      push protocol).
      
      The backward-compatibility breakage resulting from "2" is considered to
      be minimal to care, since MONITOR is a debugging command, and because
      anyway this change is not going to break the format or the behavior, but
      just when a connection is closed on big output buffer issues.
      56d26c23
  25. 07 Jun, 2014 1 commit
    • antirez's avatar
      ROLE command added. · d34c2fa3
      antirez authored
      The new ROLE command is designed in order to provide a client with
      informations about the replication in a fast and easy to use way
      compared to the INFO command where the same information is also
      available.
      d34c2fa3
  26. 22 May, 2014 2 commits