- 30 Sep, 2015 8 commits
-
-
antirez authored
After the introduction of the list with clients with pending writes, to process clients incrementally outside of the event loop we also need to process the pending writes list.
-
antirez authored
-
antirez authored
-
antirez authored
May potentially improve locality... not exactly clear if this makes a difference or not. But for sure is harmless.
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
-
- 06 Aug, 2015 2 commits
-
-
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.
-
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).
-
- 28 Jul, 2015 3 commits
- 27 Jul, 2015 1 commit
-
-
antirez authored
-
- 26 Jul, 2015 6 commits
- 25 Jul, 2015 1 commit
-
-
antirez authored
-
- 14 Jul, 2015 1 commit
-
-
Oran Agra authored
-
- 23 Jun, 2015 1 commit
-
-
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.
-
- 12 May, 2015 1 commit
-
-
Jungtaek Lim authored
-
- 26 Apr, 2015 1 commit
-
-
Yossi Gottlieb authored
limit.
-
- 01 Apr, 2015 1 commit
-
-
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.
-
- 31 Mar, 2015 1 commit
-
-
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.
-
- 30 Mar, 2015 1 commit
-
-
antirez authored
Change done in order to remove a warning and improve code robustness. No actual bug here.
-
- 21 Mar, 2015 2 commits
-
-
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.
-
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.
-
- 11 Mar, 2015 1 commit
-
-
antirez authored
Still many things to convert inside config.c in the next commits. Some const safety in String objects creation and addReply() family functions.
-
- 27 Feb, 2015 1 commit
-
-
antirez authored
Thanks to @codeslinger (Toby DiPasquale) for identifying the issue. Related to issue #2409.
-
- 25 Feb, 2015 1 commit
-
-
antirez authored
This is safe since bufpos is small, inside the range of the local client buffer.
-
- 19 Jan, 2015 1 commit
-
-
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).
-
- 23 Dec, 2014 1 commit
-
-
Matt Stancliff authored
Refactor a common pattern into one function so we don't end up with copy/paste programming.
-
- 11 Dec, 2014 2 commits
-
-
antirez authored
Specialized single-use function. Not the best match for sds.c btw. Also genClientPeerId() is no longer static: we need symbols.
-
Matt Stancliff authored
Instead of manually checking for strchr(n,':') everywhere, we can use our new centralized IP formatting functions.
-
- 03 Dec, 2014 1 commit
-
-
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.
-
- 25 Nov, 2014 1 commit
-
-
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.
-
- 11 Nov, 2014 1 commit
-
-
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.
-