critical bug about glueoutputbuffers=yes fixed. Under load and with pipelining and clients disconnecting on the middle of the chat with the server, Redis could block. Now it's ok

This commit is contained in:
antirez 2009-05-22 18:35:51 +02:00
parent 32c3a426a6
commit 6fdc78ac69
2 changed files with 2 additions and 2 deletions

1
TODO
View File

@ -5,7 +5,6 @@ BEFORE REDIS 1.0.0-rc1
* maxmemory support * maxmemory support
* maxclients support * maxclients support
* Resize the expires and Sets hash tables if needed as well? For Sets the right moment to check for this is probably in SREM * Resize the expires and Sets hash tables if needed as well? For Sets the right moment to check for this is probably in SREM
* TTL command that returns -1 if a key is not volatile otherwise the time to live of a volatile key in seconds.
* What happens if the saving child gets killed or segfaults instead of ending normally? Handle this. * What happens if the saving child gets killed or segfaults instead of ending normally? Handle this.
* Make sinterstore / unionstore / sdiffstore returning the cardinality of the resulting set. * Make sinterstore / unionstore / sdiffstore returning the cardinality of the resulting set.
* check 'server.dirty' everywere * check 'server.dirty' everywere

View File

@ -1119,7 +1119,8 @@ static void glueReplyBuffersIfNeeded(redisClient *c) {
listDelNode(c->reply,ln); listDelNode(c->reply,ln);
} }
/* Now the output buffer is empty, add the new single element */ /* Now the output buffer is empty, add the new single element */
addReplySds(c,sdsnewlen(buf,totlen)); o = createObject(REDIS_STRING,sdsnewlen(buf,totlen));
if (!listAddNodeTail(c->reply,o)) oom("listAddNodeTail");
} }
} }