• antirez's avatar
    syncio.c read / write functions reworked for correctness and performance. · 0cf10e8e
    antirez authored
    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.
    0cf10e8e
syncio.c 5.46 KB