]> 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:45:12 +0000 (22:45 +0200)
commit0cf10e8e867274397f2b7201e51b00996263a143
tree8fec6d3150879bcbe6182661bf7b7f27dd42428d
parent9b43b1ef4d646922fc904fda61ff5ab67a2581db
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