summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2015-08-06 15:08:54 +0200
committerantirez <antirez@gmail.com>2015-08-06 15:08:54 +0200
commit55cb64bbfb7d4a32fd1289137631f0f0de4cd2d1 (patch)
tree8fda80e3094134fb74d6fab8d2bb75aba1c1ee5c
parentce5761e0618b8d5788c2f6f8f6a514a77040ab24 (diff)
downloadredis-55cb64bbfb7d4a32fd1289137631f0f0de4cd2d1.tar.gz
flushSlavesOutputBuffers(): details clarified via comments.
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.
-rw-r--r--src/networking.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/networking.c b/src/networking.c
index 782dc6c4a..336561e10 100644
--- a/src/networking.c
+++ b/src/networking.c
@@ -1668,6 +1668,12 @@ void flushSlavesOutputBuffers(void) {
client *slave = listNodeValue(ln);
int events;
+ /* Note that the following will not flush output buffers of slaves
+ * in STATE_ONLINE but having put_online_on_ack set to true: in this
+ * case the writable event is never installed, since the purpose
+ * of put_online_on_ack is to postpone the moment it is installed.
+ * This is what we want since slaves in this state should not receive
+ * writes before the first ACK. */
events = aeGetFileEvents(server.el,slave->fd);
if (events & AE_WRITABLE &&
slave->replstate == SLAVE_STATE_ONLINE &&