mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-23 00:28:26 -05:00
While the slave is busy, just accumulate master input.
Processing command from the master while the slave is in busy state is not correct, however we cannot, also, just reply -BUSY to the replication stream commands from the master. The correct solution is to stop processing data from the master, but just accumulate the stream into the buffers and resume the processing later. Related to #5297.
This commit is contained in:
parent
83af8ef1fd
commit
9ab91b8c6c
@ -1362,6 +1362,12 @@ void processInputBuffer(client *c) {
|
||||
/* Immediately abort if the client is in the middle of something. */
|
||||
if (c->flags & CLIENT_BLOCKED) break;
|
||||
|
||||
/* Don't process input from the master while there is a busy script
|
||||
* condition on the slave. We want just to accumulate the replication
|
||||
* stream (instead of replying -BUSY like we do with other clients) and
|
||||
* later resume the processing. */
|
||||
if (server.lua_timedout && c->flags & CLIENT_MASTER) break;
|
||||
|
||||
/* CLIENT_CLOSE_AFTER_REPLY closes the connection once the reply is
|
||||
* written to the client. Make sure to not let the reply grow after
|
||||
* this flag has been set (i.e. don't process more commands).
|
||||
|
@ -2683,7 +2683,6 @@ int processCommand(client *c) {
|
||||
|
||||
/* Lua script too slow? Only allow a limited number of commands. */
|
||||
if (server.lua_timedout &&
|
||||
!(c->flags & CLIENT_MASTER) &&
|
||||
c->cmd->proc != authCommand &&
|
||||
c->cmd->proc != replconfCommand &&
|
||||
!(c->cmd->proc == shutdownCommand &&
|
||||
|
Loading…
Reference in New Issue
Block a user