diff options
author | antirez <antirez@gmail.com> | 2014-04-04 15:34:59 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2014-04-04 15:37:01 +0200 |
commit | 1c894f5989b40e19319df8d4cf01fc51238f8e80 (patch) | |
tree | ad8dcc21d3869fbe4e9d54900b0a67df00d80e65 | |
parent | e2871e21fd95168ca83403a219bdd02e44d9b37b (diff) | |
download | redis-1c894f5989b40e19319df8d4cf01fc51238f8e80.tar.gz |
Make SLOWLOG argument truncation play well with LZF encoding.
-rw-r--r-- | src/slowlog.c | 10 |
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]); |