]> git.saurik.com Git - redis.git/commit
syncio.c read / write functions reworked for correctness and performance.
authorantirez <antirez@gmail.com>
Wed, 2 May 2012 20:41:50 +0000 (22:41 +0200)
committerantirez <antirez@gmail.com>
Wed, 2 May 2012 20:41:50 +0000 (22:41 +0200)
commitaf3853c3bf6cbb4f4b75afbc56dc2ba0c17c4d5e
treebc05a18d0e43334c2fe2428e39a2b2452c8d0c12
parent299290d3a42e92d73a22169c87aa21d2fe6e3b34
syncio.c read / write functions reworked for correctness and performance.

The new implementation start reading / writing before blocking with
aeWait(), likely the descriptor can accept writes or has buffered data
inside and we can go faster, otherwise we get an error and wait.

This change has effects on speed but also on correctness: on socket
errors when we perform non blocking connect(2) write is performed ASAP
and the error is returned ASAP before waiting.

So the practical effect is that now a Redis slave is more available if it
can not connect to the master, previously the slave continued to block on
syncWrite() trying to send SYNC, and serving commands very slowly.
src/syncio.c