1. 06 Aug, 2015 2 commits
    • antirez's avatar
      flushSlavesOutputBuffers(): details clarified via comments. · 55cb64bb
      antirez authored
      Talking with @oranagra we had to reason a little bit to understand if
      this function could ever flush the output buffers of the wrong slaves,
      having online state but actually not being ready to receive writes
      before the first ACK is received from them (this happens with diskless
      replication).
      
      Next time we'll just read this comment.
      55cb64bb
    • antirez's avatar
      Replication: add REPLCONF CAPA EOF support. · 3e6d4d59
      antirez authored
      Add the concept of slaves capabilities to Redis, the slave now presents
      to the Redis master with a set of capabilities in the form:
      
          REPLCONF capa SOMECAPA capa OTHERCAPA ...
      
      This has the effect of setting slave->slave_capa with the corresponding
      SLAVE_CAPA macros that the master can test later to understand if it
      the slave will understand certain formats and protocols of the
      replication process. This makes it much simpler to introduce new
      replication capabilities in the future in a way that don't break old
      slaves or masters.
      
      This patch was designed and implemented together with Oran Agra
      (@oranagra).
      3e6d4d59
  2. 28 Jul, 2015 3 commits
  3. 27 Jul, 2015 1 commit
  4. 26 Jul, 2015 6 commits
  5. 25 Jul, 2015 1 commit
  6. 14 Jul, 2015 1 commit
  7. 23 Jun, 2015 1 commit
    • antirez's avatar
      Geo: GEOADD implementation improved, replication fixed · bb328456
      antirez authored
      1. We no longer use a fake client but just rewriting.
      2. We group all the inserts into a single ZADD dispatch (big speed win).
      3. As a side effect of the correct implementation, replication works.
      4. The return value of the command is now correct.
      bb328456
  8. 12 May, 2015 1 commit
  9. 26 Apr, 2015 1 commit
  10. 01 Apr, 2015 1 commit
    • antirez's avatar
      Net: improve prepareClientToWrite() error handling and comments. · 6c60526d
      antirez authored
      When we fail to setup the write handler it does not make sense to take
      the client around, it is missing writes: whatever is a client or a slave
      anyway the connection should terminated ASAP.
      
      Moreover what the function does exactly with its return value, and in
      which case the write handler is installed on the socket, was not clear,
      so the functions comment are improved to make the goals of the function
      more obvious.
      
      Also related to #2485.
      6c60526d
  11. 31 Mar, 2015 1 commit
    • Oran Agra's avatar
      fixes to diskless replication. · 159875b5
      Oran Agra authored
      master was closing the connection if the RDB transfer took long time.
      and also sent PINGs to the slave before it got the initial ACK, in which case the slave wouldn't be able to find the EOF marker.
      159875b5
  12. 30 Mar, 2015 1 commit
  13. 21 Mar, 2015 2 commits
    • antirez's avatar
      Net: processUnblockedClients() and clientsArePaused() minor changes. · 2b278a33
      antirez authored
      1. No need to set btype in processUnblockedClients(), since clients
         flagged REDIS_UNBLOCKED should have it already cleared.
      2. When putting clients in the unblocked clients list, clientsArePaused()
         should flag them with REDIS_UNBLOCKED. Not strictly needed with the
         current code but is more coherent.
      2b278a33
    • antirez's avatar
      Net: clientsArePaused() should not touch blocked clients. · 5fe4a231
      antirez authored
      When the list of unblocked clients were processed, btype was set to
      blocking type none, but the client remained flagged with REDIS_BLOCKED.
      When timeout is reached (or when the client disconnects), unblocking it
      will trigger an assertion.
      
      There is no need to process pending requests from blocked clients, so
      now clientsArePaused() just avoid touching blocked clients.
      
      Close #2467.
      5fe4a231
  14. 11 Mar, 2015 1 commit
  15. 27 Feb, 2015 1 commit
  16. 25 Feb, 2015 1 commit
  17. 19 Jan, 2015 1 commit
    • Matt Stancliff's avatar
      Improve networking type correctness · 53c082ec
      Matt Stancliff authored
      read() and write() return ssize_t (signed long), not int.
      
      For other offsets, we can use the unsigned size_t type instead
      of a signed offset (since our replication offsets and buffer
      positions are never negative).
      53c082ec
  18. 23 Dec, 2014 1 commit
  19. 11 Dec, 2014 2 commits
    • antirez's avatar
      sdsformatip() removed. · bbf0736c
      antirez authored
      Specialized single-use function. Not the best match for sds.c btw.
      Also genClientPeerId() is no longer static: we need symbols.
      bbf0736c
    • Matt Stancliff's avatar
      Cleanup all IP formatting code · 491881e1
      Matt Stancliff authored
      Instead of manually checking for strchr(n,':') everywhere,
      we can use our new centralized IP formatting functions.
      491881e1
  20. 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
  21. 25 Nov, 2014 1 commit
    • antirez's avatar
      Avoid valgrind memory leak false positive in processInlineBuffer(). · a8f9a989
      antirez authored
      zmalloc(0) cauesd to actually trigger a non-zero allocation since with
      standard libc malloc we have our own zmalloc header for memory tracking,
      but at the same time the returned pointer is at the end of the block and
      not in the middle. This triggers a false positive when testing with
      valgrind.
      
      When the inline protocol args count is 0, we now avoid reallocating
      c->argv, preventing the issue to happen.
      a8f9a989
  22. 11 Nov, 2014 1 commit
    • 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
  23. 27 Oct, 2014 1 commit
  24. 29 Sep, 2014 1 commit
  25. 13 Aug, 2014 1 commit
  26. 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
  27. 26 Jun, 2014 2 commits
  28. 24 Jun, 2014 1 commit
  29. 16 Jun, 2014 1 commit
    • antirez's avatar
      CLIENT KILL API modified. · bb2011d9
      antirez authored
      Added a new SKIPME option that is true by default, that prevents the
      client sending the command to be killed, unless SKIPME NO is sent.
      bb2011d9