Unverified Commit 7900b48b authored by Binbin's avatar Binbin Committed by GitHub
Browse files

slowlog get command supports passing in -1 to get all logs. (#9018)

This was already the case before this commit, but it wasn't clear / intended in the code, now it does.
parent dee378d7
......@@ -143,8 +143,8 @@ void slowlogCommand(client *c) {
if (c->argc == 2 && !strcasecmp(c->argv[1]->ptr,"help")) {
const char *help[] = {
"GET [<count>]",
" Return top <count> entries from the slowlog (default: 10). Entries are",
" made of:",
" Return top <count> entries from the slowlog (default: 10, -1 mean all).",
" Entries are made of:",
" id, timestamp, time in microseconds, arguments array, client IP and port,",
" client name",
"LEN",
......@@ -168,10 +168,19 @@ NULL
listNode *ln;
slowlogEntry *se;
if (c->argc == 3 &&
getLongFromObjectOrReply(c,c->argv[2],&count,NULL) != C_OK)
if (c->argc == 3) {
/* Consume count arg. */
if (getRangeLongFromObjectOrReply(c, c->argv[2], -1,
LONG_MAX, &count, "count should be greater than or equal to -1") != C_OK)
return;
if (count == -1) {
/* We treat -1 as a special value, which means to get all slow logs.
* Simply set count to the length of server.slowlog.*/
count = listLength(server.slowlog);
}
}
listRewind(server.slowlog,&li);
totentries = addReplyDeferredLen(c);
while(count-- && (ln = listNext(&li))) {
......
......@@ -175,4 +175,26 @@ start_server {tags {"slowlog"} overrides {slowlog-log-slower-than 1000000}} {
r debug sleep 0.2
assert_equal [r slowlog len] 0
} {} {needs:debug}
test {SLOWLOG - count must be >= -1} {
assert_error "ERR count should be greater than or equal to -1" {r slowlog get -2}
assert_error "ERR count should be greater than or equal to -1" {r slowlog get -222}
}
test {SLOWLOG - get all slow logs} {
r config set slowlog-log-slower-than 0
r config set slowlog-max-len 3
r slowlog reset
r set key test
r sadd set a b c
r incr num
r lpush list a
assert_equal [r slowlog len] 3
assert_equal 0 [llength [r slowlog get 0]]
assert_equal 1 [llength [r slowlog get 1]]
assert_equal 3 [llength [r slowlog get -1]]
assert_equal 3 [llength [r slowlog get 3]]
}
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment