summaryrefslogtreecommitdiff
path: root/src/server.c
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2018-02-28 12:31:50 +0100
committerantirez <antirez@gmail.com>2018-02-28 12:31:52 +0100
commit6cba12397ba5bb471bc020b96071637ccbd13d0e (patch)
treebb1008726c92547f700b05f49e9b96903ada3d96 /src/server.c
parentd69fc0d76a8be9389728588c11bf06143c27528a (diff)
downloadredis-wait-aof.tar.gz
WAIT AOF: deny if AOF is off. Trigger sync in proper place.wait-aof
Diffstat (limited to 'src/server.c')
-rw-r--r--src/server.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/server.c b/src/server.c
index 6bd19f578..819da25cc 100644
--- a/src/server.c
+++ b/src/server.c
@@ -1230,9 +1230,19 @@ void beforeSleep(struct aeEventLoop *eventLoop) {
/* Unblock all the clients blocked for synchronous replication
* or AOF sync in WAIT. */
- if (listLength(server.clients_waiting_acks))
+ if (listLength(server.clients_waiting_acks)) {
processClientsBlockedInWait();
+ /* If after this cycle we have still clients blocked waiting for
+ * AOF fsync, try to start a new sync cycle. Note that if one is
+ * already in progress, the call does nothing. */
+ if (server.blocked_clients_by_type[BLOCKED_AOF] &&
+ server.aof_state == AOF_ON)
+ {
+ aofStartBackgroundFsync();
+ }
+ }
+
/* Check if there are clients unblocked by modules that implement
* blocking commands. */
moduleHandleBlockedClients();