1940 Commits

Author SHA1 Message Date
antirez
9419eb0ffd More incremental active expired keys collection process.
If a large amonut of keys are all expiring about at the same time, the
"active" expired keys collection cycle used to block as far as the
percentage of already expired keys was >= 25% of the total population of
keys with an expire set.

This could block the server even for many seconds in order to reclaim
memory ASAP. The new algorithm uses at max a small amount of
milliseconds per cycle, even if this means reclaiming the memory less
promptly it also means a more responsive server.
2012-05-12 09:33:47 +02:00
antirez
6375e5dc0e memtest.c: integer overflow fixed. 2012-05-11 16:05:08 +02:00
antirez
d8769edf15 Macros ULONG_ONEZERO / ULONG_ZEROONE were inverted in #ifdef to test 32/64 bit arch. 2012-05-11 16:04:27 +02:00
antirez
e2c0197d98 Fix PREFIX typo in Makefile. 2012-05-09 20:45:00 +02:00
antirez
2cf55e3a47 Allow PREFIX to be overrided in Makefile. 2012-05-09 10:35:01 +02:00
antirez
e74fe10b00 Redis 2.4.13 2.4.13 2012-05-02 12:14:48 +02:00
Pieter Noordhuis
f2ffb59294 Use safe dictionary iterator from KEYS
Every matched key in a KEYS call is checked for expiration. When the key
is set to expire, the call to `getExpire` will assert that the key also
exists in the main dictionary. This in turn causes a rehashing step to
be executed. Rehashing a dictionary when there is an iterator active may
result in the iterator emitting duplicate entries, or not emitting some
entries at all. By using a safe iterator, the rehash step is omitted.
2012-05-01 10:52:27 +02:00
antirez
9cb09c4d2c Redis 2.4.12 2.4.12 2012-04-30 12:27:50 +02:00
antirez
fc7ea2f7cd Properly wait the slave to sync with master in BRPOPLPUSH test. 2012-04-30 11:50:42 +02:00
antirez
fb38fd3c89 A more lightweight implementation of issue 141 regression test. 2012-04-30 11:48:32 +02:00
antirez
9e066ae051 Redis test: More reliable BRPOPLPUSH replication test.
Now it uses the new wait_for_condition testing primitive.
Also wait_for_condition implementation was fixed in this commit to properly
escape the expr command and its argument.
2012-04-30 11:48:16 +02:00
antirez
28500d193f Testing framework fixes and improvements backported from 2.6. 2012-04-30 11:47:47 +02:00
antirez
63bae7c553 A few compiler warnings suppressed. 2012-04-29 17:20:56 +02:00
antirez
379ac85eed memtest.c fixed to actually use v1 and v2 in memtest_fill_value(). 2012-04-29 17:17:44 +02:00
antirez
df10c797e0 Limit memory used by big SLOWLOG entries.
Two limits are added:

1) Up to SLOWLOG_ENTRY_MAX_ARGV arguments are logged.
2) Up to SLOWLOG_ENTRY_MAX_STRING bytes per argument are logged.
3) slowlog-max-len is set to 128 by default (was 1024).

The number of remaining arguments / bytes is logged in the entry
so that the user can understand better the nature of the logged command.
2012-04-21 21:50:25 +02:00
antirez
f743cacc85 Redis 2.4.11 2.4.11 2012-04-19 14:56:16 +02:00
antirez
922283b553 New redis-cli backported from unstable. 2012-04-18 21:20:35 +02:00
antirez
32fef1566a Marginally cleaner lookupKeyByPattern() implementation.
just fieldobj itself as sentinel of the fact a field object is used or
not, instead of using the filed length, that may be confusing both for
people and for the compiler emitting a warning.
2012-04-18 11:40:48 +02:00
antirez
8e5e8f0eca lookupKeyByPattern() used by SORT GET/BY rewritten. Fixes issue #460.
lookupKeyByPattern() was implemented with a trick to speedup the lookup
process allocating two fake Redis obejcts on the stack. However now that
we propagate expires to the slave as DEL operations the lookup of the
key may result into a call to expireIfNeeded() having the stack
allocated object as argument, that may in turn use it to create the
protocol to send to the slave. But since this fake obejcts are
inherently read-only this is a problem.

As a side effect of this fix there are no longer size limits in the
pattern to be used with GET/BY option of SORT.

See https://github.com/antirez/redis/issues/460 for bug details.
2012-04-17 18:27:18 +02:00
jokea
7b4dc9b979 implement aeWait using poll(2). Fixes issue #267. 2012-04-06 11:49:40 +02:00
antirez
95c6a1a5b8 Structure field controlling the INFO field master_link_down_since_seconds initialized correctly to avoid strange INFO output at startup when a slave has yet to connect to its master. 2012-04-04 18:31:37 +02:00
antirez
1fa954a558 Redis 2.4.10 2.4.10 2012-03-30 13:07:18 +02:00
antirez
06665b7191 Useless GCC warning suppressed. 2012-03-30 13:02:08 +02:00
Salvatore Sanfilippo
3c38b0876e Merge pull request #417 from josephjang/e95ca1db21b2dbe82f39a3f7f6390cb5f58dafae
a memory leak with replication on two or more dbs including >= db10
2012-03-30 01:28:58 -07:00
Joseph Jang
e95ca1db21 Fixed a memory leak with replication
occurs when two or more dbs are replicated and at least one of them is >db10
2012-03-30 02:17:21 +09:00
antirez
6938960b66 Fix for slaves chains. Force resync of slaves (simply disconnecting them) when SLAVEOF turns a master into a slave. 2012-03-29 09:31:39 +02:00
antirez
9a5cbf9f7e Memory addressing test implemented. 2012-03-19 14:03:00 +01:00
antirez
1dfe75a09b Redis 2.4.9 2.4.9 2012-03-18 22:14:28 +01:00
antirez
8122954b9a Memory test feature backported into 2.4. 2012-03-18 22:08:44 +01:00
antirez
f5f95b35d5 More memory tests implemented. Default number of iterations lowered to a more acceptable value of 50. 2012-03-18 22:00:08 +01:00
antirez
015dba6adb Fixed typo. 2012-03-18 22:00:04 +01:00
antirez
83f0c677f8 Number of iteration of --test-memory is now 300 (several minutes per gigabyte). Memtest86 and Memtester links are also displayed while running the test. 2012-03-18 21:59:59 +01:00
antirez
a7e66f8048 On crash suggest to give --test-memory a try. 2012-03-18 21:59:52 +01:00
antirez
ae92e6dc15 Memory test function now less boring thanks to screen-wide progress bar. 2012-03-18 21:58:40 +01:00
antirez
e306e99029 Hem... actual memtest.c file added. 2012-03-18 21:58:35 +01:00
antirez
9c3bc7529d First implementation of --test-memory. Still a work in progress. 2012-03-18 21:58:24 +01:00
antirez
7961d7ea0d redis-benchmark: backported the more capable version from the unstable branch (pipelining,run selected tests,fixes) 2012-02-26 11:41:44 +01:00
antirez
a3b580c0c5 The universe is 80 columns wide, accept it. 2012-02-22 17:23:13 +01:00
Brad Voth
660a1277be updated utils/install_server.sh to support chkconfig boxes (redhat/
centos) as well as debian/ubuntu
2012-02-22 17:23:07 +01:00
antirez
b805430a9e Fix for issue #306, thanks to tchajed (on github) for the pull request. The original patch was reworked a bit. 2012-02-22 16:09:01 +01:00
antirez
a8a3275566 Redis-cli should accept help command even if there is no connection to the server. 2012-02-22 15:16:26 +01:00
antirez
bd624d0fc3 Redis version 2.4.8 2.4.8 2012-02-22 14:23:43 +01:00
antirez
f1654434de zzlIsInRange() now is capable of handling empty sorted sets that may end inside the data set when loading very old RDB files produced by early-stage versions of Redis. 2012-02-22 09:52:39 +01:00
Salvatore Sanfilippo
9f50ce0d8d Merge pull request #346 from pietern/2.4-segv
Force SIGSEGV without HAVE_BACKTRACE (2.4)
2012-02-21 10:29:34 -08:00
Pieter Noordhuis
c39b869460 Solaris has backtrace(3) 2012-02-21 10:11:20 -08:00
Pieter Noordhuis
a0dc1e6969 Also force SIGSEGV without HAVE_BACKTRACE 2012-02-21 10:05:46 -08:00
antirez
246c4c2322 Fixed undefined behavior in *INCR style functions overflow detection. Sorry clang! 2012-02-21 18:25:49 +01:00
antirez
2b0d9c5ac6 Added an unstalbe-alike distclean target to 2.4 Makefile. 2012-02-21 10:16:00 +01:00
antirez
19fb7404a4 Fix 32bit build of hiredis 2012-02-21 10:12:02 +01:00
antirez
11f0a23caf Applied a few modifications to hiredis to tune it for speed (redis-benchmark) and ability to read more deeply nested replies (redis-cli). 2012-02-21 10:11:47 +01:00