summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2014-04-04 15:34:59 +0200
committerantirez <antirez@gmail.com>2014-04-04 15:37:01 +0200
commit1c894f5989b40e19319df8d4cf01fc51238f8e80 (patch)
treead8dcc21d3869fbe4e9d54900b0a67df00d80e65
parente2871e21fd95168ca83403a219bdd02e44d9b37b (diff)
downloadredis-1c894f5989b40e19319df8d4cf01fc51238f8e80.tar.gz
Make SLOWLOG argument truncation play well with LZF encoding.
-rw-r--r--src/slowlog.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/slowlog.c b/src/slowlog.c
index ff6ccf472..005c8daad 100644
--- a/src/slowlog.c
+++ b/src/slowlog.c
@@ -63,15 +63,17 @@ slowlogEntry *slowlogCreateEntry(robj **argv, int argc, long long duration) {
} else {
/* Trim too long strings as well... */
if (argv[j]->type == REDIS_STRING &&
- sdsEncodedObject(argv[j]) &&
- sdslen(argv[j]->ptr) > SLOWLOG_ENTRY_MAX_STRING)
+ (sdsEncodedObject(argv[j]) || lzfEncodedObject(argv[j])) &&
+ stringObjectLen(argv[j]) > SLOWLOG_ENTRY_MAX_STRING)
{
- sds s = sdsnewlen(argv[j]->ptr, SLOWLOG_ENTRY_MAX_STRING);
+ robj *o = getDecodedObject(argv[j]);
+ sds s = sdsnewlen(o->ptr, SLOWLOG_ENTRY_MAX_STRING);
s = sdscatprintf(s,"... (%lu more bytes)",
(unsigned long)
- sdslen(argv[j]->ptr) - SLOWLOG_ENTRY_MAX_STRING);
+ stringObjectLen(argv[j]) - SLOWLOG_ENTRY_MAX_STRING);
se->argv[j] = createObject(REDIS_STRING,s);
+ decrRefCount(o);
} else {
se->argv[j] = argv[j];
incrRefCount(argv[j]);