Commit Graph

1877 Commits

Author SHA1 Message Date
c63e1b83c4 This fixes issue #327, is a very complex fix (unfortunately), details:
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.
2012-02-15 15:20:20 +01:00
05755f5c40 Initial version of c->reply_bytes implementation backported from unstable to 2.4, in order to apply issue 327 patches. 2012-02-15 15:20:05 +01:00
02b984c219 redis-check-aof is now large files safe also on 32 bit systems. 2012-02-14 19:57:31 +01:00
01b302aba4 add -f flag to cp when installing, otherwise stopping the server is
needed when installing a new Redis version. Thanks to Scott Kevill.
Fixes issue #335.
2012-02-14 16:15:42 +01:00
bad380bdb5 Redis 2.4.7 2.4.7 2012-02-02 15:29:24 +01:00
0b73cbb69f sds.c no longe pre-allocate more than 1MB of free space ahead. This fixes issue #252. 2012-02-02 12:40:44 +01:00
1cd0cdd523 Set a 3.5 GB maxmemory limit with noeviction policy if a 32 bit instance without user-provided memory limits is detected. 2012-02-02 10:17:21 +01:00
f373061563 Added a server.arch_bits field instead of computing it at runtime for INFO. 2012-02-02 10:02:40 +01:00
29b3794231 Only incremnet stats for key miss/hit when the key is semantically accessed in read-only. 2012-02-02 09:51:11 +01:00
58bfbd1fa4 Merge pull request #296 from pietern/2.4-expirefix
Don't expire keys when loading an RDB after a SYNC
2012-01-16 01:18:41 -08:00
aa794ac06d Don't expire keys when loading an RDB after a SYNC
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.
2012-01-13 18:03:33 -08:00
8b8261edc3 Possible fix for false positives in issue 141 regression test 2012-01-12 16:24:41 +01:00
fbfe656236 On crash print information about the current client (if any), command vector, and object associated to first argument assuming it is a key. 2012-01-12 16:16:23 +01:00
e1849b6456 Redis 2.4.6 2.4.6 2012-01-11 20:30:55 +01:00
d0f37e247c error in comment fixed 2012-01-11 20:25:41 +01:00
3b67a0f905 show GCC version in INFO output. 2012-01-10 18:39:32 +01:00
2c2b6159d3 Regression test for the main problem causing issue #141. Minor changes/fixes/additions to the test suite itself needed to write the test. 2012-01-07 12:52:42 +01:00
d4945b253b Redis test: when assertion fails print not just the expression but also expanded values in the error message. 2012-01-07 12:52:32 +01:00
53785789a0 Regression tests for protocol desync bug related to Issue #141 2012-01-07 12:51:22 +01:00
e7b85b3315 Protections against protocol desyncs, leading to infinite query buffer growing, due to nul-terms in specific bytes of the request or indefinitely long multi bulk or bulk count strings without newlines. This bug is related to Issue #141 as well. 2012-01-07 12:50:44 +01:00
a5045d552c Fixed replication when multiple slaves are attaching at the same time. The output buffer was not copied correctly between slaves. This fixes issue #141. 2012-01-07 12:48:10 +01:00
8939ff1230 Do not propagate DEBUG LOADAOF 2012-01-07 12:47:10 +01:00
8b102e041a List connected slaves with ip,port,state information in INFO, as requested by github issue #219 2012-01-07 12:44:27 +01:00
273f41023d Redis 2.4.5 2.4.5 2011-12-23 09:43:24 +01:00
5bb2565959 Added regression test for ZUNIONSTORE creating NaN (github issue #264) 2011-12-23 09:34:41 +01:00
0692d060b3 Prevent NaN scores in sorted sets resulting from calls to ZUNIONSTORE and ZINTERSTORE. 2011-12-23 09:28:51 +01:00
2e689217d5 Redis test: vaoid two false positives while running under valgrind. 2011-12-20 10:35:33 +01:00
b76088845c Redis test: two redundant tests removed as they tend to create issues when running the test with valgrind. 2011-12-20 10:35:23 +01:00
8a625029e7 Redis test port allocation fixed. 2011-12-20 10:34:51 +01:00
8a6b21da61 unit/introspection.tcl added 2011-12-19 10:22:04 +01:00
c08eb8e74d unit/introspection added among tests executed by default 2011-12-19 10:19:12 +01:00
8b860b36b3 Fixed memleak in CLIENT INFO, added simple test that will work as regression test on mac os x and in the CI when running over valgrind. This fixes issue #256 2011-12-19 10:19:08 +01:00
61e44f614d added assertion in zslInsert() that ensures the inserted element score is not NaN 2011-12-18 11:13:13 +01:00
bc62bc5eac Fixed SORT bugs (issue #224) with regression tests. 2011-12-01 16:08:30 +01:00
67d6b29404 Replication bug fixed: now non blocking connect is also forced to follow the configured replication timeout. 2011-11-30 17:13:15 +01:00
901120f8e6 --quiet option implemented in the Redis test. Output improved a bit. 2011-11-30 09:36:30 +01:00
54a2934f10 Redis 2.4.4 2.4.4 2011-11-28 11:22:08 +01:00
a675e5b171 two new AOF related INFO fields that can be interesting information for debugging. 2011-11-28 11:11:13 +01:00
0f2199ec29 show initial querybuf bytes on querybuf overflow. 2011-11-25 17:08:25 +01:00
241e3cff83 jemalloc gitignore updated to jemalloc 2.2.5 2011-11-25 16:48:07 +01:00
a9c2f0f28a Update to jemalloc 2.2.5 2011-11-25 16:47:55 +01:00
7558b1fe4d log client protocol errors for log level >= verbose 2011-11-25 16:09:16 +01:00
fcf5783632 Added regression tests for issue #209 2011-11-25 12:27:00 +01:00
6532df2e7e clean REDIS_DIRTY_CAS when discard Command runs. otherwise the next MULTI/EXEC may fail in the same RedisClient 2011-11-25 12:13:57 +01:00
8a82ee0f3c better bug report info on crash (backported from unstable) 2011-11-24 15:53:35 +01:00
f4e2abfcd4 minor refactoring to networking.c adding a separated function to get a string representing the current state of all the connected clients. 2011-11-24 15:47:55 +01:00
3852e2a831 last executed command in CLIENT LIST output. 2011-11-24 14:56:43 +01:00
6a252e9498 Redis 2.4.3 2.4.3 2011-11-21 18:47:39 +01:00
5d5e68a486 Fixed bug in getClientInfoString() that was not rendering the N (no flags) special flag correctly. 2011-11-21 18:37:22 +01:00
a6e4627438 Close client connection and log the event when the client input buffer reaches 1GB. 2011-11-21 18:37:17 +01:00