mirror of
https://github.com/fluencelabs/redis
synced 2025-04-01 23:31:03 +00:00
Use correct argc/argv for cleanup when loading AOF
This commit is contained in:
parent
d8b6ae3cd6
commit
45b0f6fb14
@ -284,9 +284,11 @@ int loadAppendOnlyFile(char *filename) {
|
|||||||
/* The fake client should not have a reply */
|
/* The fake client should not have a reply */
|
||||||
redisAssert(fakeClient->bufpos == 0 && listLength(fakeClient->reply) == 0);
|
redisAssert(fakeClient->bufpos == 0 && listLength(fakeClient->reply) == 0);
|
||||||
|
|
||||||
/* Clean up, ready for the next command */
|
/* Clean up. Command code may have changed argv/argc so we use the
|
||||||
for (j = 0; j < argc; j++) decrRefCount(argv[j]);
|
* argv/argc of the client instead of the local variables. */
|
||||||
zfree(argv);
|
for (j = 0; j < fakeClient->argc; j++)
|
||||||
|
decrRefCount(fakeClient->argv[j]);
|
||||||
|
zfree(fakeClient->argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This point can only be reached when EOF is reached without errors.
|
/* This point can only be reached when EOF is reached without errors.
|
||||||
|
@ -83,4 +83,22 @@ tags {"aof"} {
|
|||||||
assert_equal "" [$client get bar]
|
assert_equal "" [$client get bar]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
## Test that SPOP (that modifies the client its argc/argv) is correctly free'd
|
||||||
|
create_aof {
|
||||||
|
append_to_aof [formatCommand sadd set foo]
|
||||||
|
append_to_aof [formatCommand sadd set bar]
|
||||||
|
append_to_aof [formatCommand spop set]
|
||||||
|
}
|
||||||
|
|
||||||
|
start_server_aof [list dir $server_path] {
|
||||||
|
test "AOF+SPOP: Server should have been started" {
|
||||||
|
assert_equal 1 [is_alive $srv]
|
||||||
|
}
|
||||||
|
|
||||||
|
test "AOF+SPOP: Set should have 1 member" {
|
||||||
|
set client [redis [dict get $srv host] [dict get $srv port]]
|
||||||
|
assert_equal 1 [$client scard set]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user