mirror of
https://github.com/fluencelabs/redis
synced 2025-03-30 22:31:03 +00:00
alsoPropagate: handle REDIS_CALL_PROPAGATE and AOF loading.
This commit is contained in:
parent
cc7f0434b5
commit
55003f7a11
@ -2030,9 +2030,12 @@ void propagate(struct redisCommand *cmd, int dbid, robj **argv, int argc,
|
|||||||
void alsoPropagate(struct redisCommand *cmd, int dbid, robj **argv, int argc,
|
void alsoPropagate(struct redisCommand *cmd, int dbid, robj **argv, int argc,
|
||||||
int target)
|
int target)
|
||||||
{
|
{
|
||||||
robj **argvcopy = zmalloc(sizeof(robj*)*argc);
|
robj **argvcopy;
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
|
if (server.loading) return; /* No propagation during loading. */
|
||||||
|
|
||||||
|
argvcopy = zmalloc(sizeof(robj*)*argc);
|
||||||
for (j = 0; j < argc; j++) {
|
for (j = 0; j < argc; j++) {
|
||||||
argvcopy[j] = argv[j];
|
argvcopy[j] = argv[j];
|
||||||
incrRefCount(argv[j]);
|
incrRefCount(argv[j]);
|
||||||
@ -2132,10 +2135,12 @@ void call(redisClient *c, int flags) {
|
|||||||
int j;
|
int j;
|
||||||
redisOp *rop;
|
redisOp *rop;
|
||||||
|
|
||||||
|
if (flags & REDIS_CALL_PROPAGATE) {
|
||||||
for (j = 0; j < server.also_propagate.numops; j++) {
|
for (j = 0; j < server.also_propagate.numops; j++) {
|
||||||
rop = &server.also_propagate.ops[j];
|
rop = &server.also_propagate.ops[j];
|
||||||
propagate(rop->cmd,rop->dbid,rop->argv,rop->argc,rop->target);
|
propagate(rop->cmd,rop->dbid,rop->argv,rop->argc,rop->target);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
redisOpArrayFree(&server.also_propagate);
|
redisOpArrayFree(&server.also_propagate);
|
||||||
}
|
}
|
||||||
server.stat_numcommands++;
|
server.stat_numcommands++;
|
||||||
|
@ -204,7 +204,7 @@ tags {"aof"} {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
## Test that SPOP with <count> (that modifies the client's argc/argv) is correctly free'd
|
## Uses the alsoPropagate() API.
|
||||||
create_aof {
|
create_aof {
|
||||||
append_to_aof [formatCommand sadd set foo]
|
append_to_aof [formatCommand sadd set foo]
|
||||||
append_to_aof [formatCommand sadd set bar]
|
append_to_aof [formatCommand sadd set bar]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user