- 21 Feb, 2012 1 commit
-
-
antirez authored
-
- 19 Feb, 2012 1 commit
-
-
antirez authored
-
- 16 Feb, 2012 3 commits
-
-
Pieter Noordhuis authored
The cron is responsible for expiring keys. When keys are expired at load time, it is possible that the snapshot of a master node gets modified. This can in turn lead to inconsistencies in the data set. A more concrete example of this behavior follows. A user reported a slave that would show an monotonically increase input buffer length, shortly after completing a SYNC. Also, `INFO` output showed a single blocked client, which could only be the master link. Investigation showed that indeed the `BRPOP` command was fed by the master. This command can only end up in the stream of write operations when it did NOT block, and effectively executed `RPOP`. However, when the key involved in the `BRPOP` is expired BEFORE the command is executed, the client executing it will block. The client in this case, is the master link.
-
antirez authored
-
antirez authored
-
- 15 Feb, 2012 1 commit
-
-
antirez authored
-
- 14 Feb, 2012 4 commits
- 13 Feb, 2012 1 commit
-
-
lsbardel authored
-
- 09 Feb, 2012 3 commits
- 08 Feb, 2012 3 commits
- 07 Feb, 2012 3 commits
- 06 Feb, 2012 2 commits
- 05 Feb, 2012 1 commit
-
-
antirez authored
-
- 04 Feb, 2012 2 commits
-
-
antirez authored
1) sendReplyToClient() now no longer stops transferring data to a single client in the case we are out of memory (maxmemory-wise). 2) in processCommand() the idea of we being out of memory is no longer the naive zmalloc_used_memory() > server.maxmemory. To say if we can accept or not write queries is up to the return value of freeMemoryIfNeeded(), that has full control about that. 3) freeMemoryIfNeeded() now does its math without considering output buffers size. But at the same time it can't let the output buffers to put us too much outside the max memory limit, so at the same time it makes sure there is enough effort into delivering the output buffers to the slaves, calling the write handler directly. This three changes are the result of many tests, I found (partially empirically) that is the best way to address the problem, but maybe we'll find better solutions in the future.
-
antirez authored
Use less memory when emitting the protocol, by using more shared objects for commonly emitted parts of the protocol.
-
- 02 Feb, 2012 3 commits
-
-
antirez authored
Now Lua scripts dispatch Redis commands properly calling the call() function. In order to make this possible call() was improved with a new flags argument that controls how the Redis command is executed.
-
antirez authored
Set a 3.5 GB maxmemory limit with noeviction policy if a 32 bit instance without user-provided memory limits is detected.
-
antirez authored
-
- 01 Feb, 2012 3 commits
-
-
antirez authored
-
antirez authored
Make SORT BY <constant> STORE ... to always produce the same output by force sorting, so that we have deterministic replication of this command.
-
antirez authored
SORT is now more deterministic: does not accept to compare by score items that have scores not representing a valid double. Also items with the same score are compared lexycographically. At the same time the scripting side introduced the ability to sort the output of SORT when sort uses the BY <constant> optimization, resulting in no specific ordering. Since in this case the user may use GET, and the result of GET can be null, converted into false as Lua data type, this commit also introduces the ability to sort Lua tables containining false, only if the first (faster) attempt at using just table.sort with a single argument fails.
-
- 31 Jan, 2012 3 commits
-
-
antirez authored
Order output of commands returning random arrays using table.sort when called from Lua, partially fixing issue #165. The issue is yet not completely fixed since we can't add the REDIS_CMD_SORT_FOR_SCRIPT flag in SORT currently, both because it may contain NULLs and because it is not cool to re-sort everything at every call when instead this should be sorted only if BY <constant> is used.
-
antirez authored
-
antirez authored
-
- 30 Jan, 2012 2 commits
-
-
antirez authored
setKey(): call the higher level wrapper setModifiedKey() instead of touchWatchedKey() even if currently they are exactly the same.
-
Michal Kwiatkowski authored
-
- 29 Jan, 2012 1 commit
-
-
Jakub Wieczorek authored
-
- 25 Jan, 2012 3 commits