diff --git a/src/aof.c b/src/aof.c index ac5fb8aa..721e5df7 100644 --- a/src/aof.c +++ b/src/aof.c @@ -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. */