mirror of
https://github.com/fluencelabs/redis
synced 2025-04-25 02:22:13 +00:00
WAIT AOF: deny if AOF is off. Trigger sync in proper place.
This commit is contained in:
parent
d69fc0d76a
commit
6cba12397b
@ -2404,6 +2404,10 @@ void waitCommand(client *c) {
|
|||||||
/* AOF or number of replicas argument parsing. */
|
/* AOF or number of replicas argument parsing. */
|
||||||
if (!strcasecmp(c->argv[1]->ptr,"AOF")) {
|
if (!strcasecmp(c->argv[1]->ptr,"AOF")) {
|
||||||
waitaof = 1;
|
waitaof = 1;
|
||||||
|
if (server.aof_state != AOF_ON) {
|
||||||
|
addReplyError(c,"WAIT AOF is only allowed when AOF is enabled");
|
||||||
|
return;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (getLongFromObjectOrReply(c,c->argv[1],&numreplicas,NULL) != C_OK)
|
if (getLongFromObjectOrReply(c,c->argv[1],&numreplicas,NULL) != C_OK)
|
||||||
return;
|
return;
|
||||||
@ -2495,11 +2499,6 @@ void processClientsBlockedInWait(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If after this cycle we have still clients blocked, try to start
|
|
||||||
* a new AOF fsync. If one is already in progress nothig will happen. */
|
|
||||||
if (server.blocked_clients_by_type[BLOCKED_AOF])
|
|
||||||
aofStartBackgroundFsync();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return the slave replication offset for this instance, that is
|
/* Return the slave replication offset for this instance, that is
|
||||||
|
12
src/server.c
12
src/server.c
@ -1230,9 +1230,19 @@ void beforeSleep(struct aeEventLoop *eventLoop) {
|
|||||||
|
|
||||||
/* Unblock all the clients blocked for synchronous replication
|
/* Unblock all the clients blocked for synchronous replication
|
||||||
* or AOF sync in WAIT. */
|
* or AOF sync in WAIT. */
|
||||||
if (listLength(server.clients_waiting_acks))
|
if (listLength(server.clients_waiting_acks)) {
|
||||||
processClientsBlockedInWait();
|
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
|
/* Check if there are clients unblocked by modules that implement
|
||||||
* blocking commands. */
|
* blocking commands. */
|
||||||
moduleHandleBlockedClients();
|
moduleHandleBlockedClients();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user