Handle write failure in AOF parent -> child ACK.

This commit is contained in:
antirez 2014-07-04 15:37:40 +02:00
parent 75ef41058d
commit 30c42f12b0

View File

@ -1096,7 +1096,14 @@ void aofChildPipeReadable(aeEventLoop *el, int fd, void *privdata, int mask) {
if (read(fd,&byte,1) == 1 && byte == '!') {
redisLog(REDIS_NOTICE,"AOF rewrite child asks to stop sending diffs.");
server.aof_stop_sending_diff = 1;
write(server.aof_pipe_write_ack_to_child,"!",1);
if (write(server.aof_pipe_write_ack_to_child,"!",1) != 1) {
/* If we can't send the ack, inform the user, but don't try again
* since in the other side the children will use a timeout if the
* kernel can't buffer our write, or, the children was
* terminated. */
redisLog(REDIS_WARNING,"Can't send ACK to AOF child: %s",
strerror(errno));
}
}
/* Remove the handler since this can be called only one time during a
* rewrite. */