Commit Graph

1530 Commits

Author SHA1 Message Date
antirez
d033ccb0af More memory tests implemented. Default number of iterations lowered to a more acceptable value of 50. 2012-03-18 18:03:27 +01:00
antirez
a5801142a4 Fixed typo. 2012-03-18 17:27:56 +01:00
antirez
1a197a3c1a 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 17:25:00 +01:00
antirez
525be599a8 On crash suggest to give --test-memory a try. 2012-03-18 11:35:35 +01:00
antirez
fb068dc91d Memory test function now less boring thanks to screen-wide progress bar. 2012-03-16 21:19:53 +01:00
antirez
54e0fa1c27 Hem... actual memtest.c file added. 2012-03-16 17:21:49 +01:00
antirez
c5166e3fc5 First implementation of --test-memory. Still a work in progress. 2012-03-16 17:17:39 +01:00
antirez
c9d3dda29c Fix for issue #391.
Use a simple protocol between clientsCron() and helper functions to
understand if the client is still valind and clientsCron() should
continue processing or if the client was freed and we should continue
with the next one.
2012-03-15 20:55:14 +01:00
huangz1990
9448ddb0c6 fix typo 2012-03-15 14:27:14 +08:00
antirez
ae22bf1ef6 Reclaim space from the client querybuf if needed. 2012-03-14 15:32:30 +01:00
antirez
739803c064 sds.c: sdsAllocSize() function added. 2012-03-14 14:58:26 +01:00
antirez
9555f8f21b sds.c new function sdsRemoveFreeSpace().
The new function is used in order to resize the string allocation so
that only the minimal allocation possible is used, removing all the free
space at the end of the string normally used to improve efficiency of
concatenation operations.
2012-03-14 10:13:23 +01:00
antirez
529bde82ec Call all the helper functions needed by clientsCron() as clientsCronSomething() for clarity. 2012-03-14 09:56:22 +01:00
antirez
d19015be12 Process async client checks like client timeouts and BLPOP timeouts incrementally using a circular list. 2012-03-13 18:05:11 +01:00
antirez
bbaeda402c Added a qbuf-free field to CLIENT LIST output. 2012-03-13 13:26:33 +01:00
antirez
e74dca73d9 Client creation time in redisClient structure. New age field in CLIENT LIST output. 2012-03-13 13:05:08 +01:00
antirez
573373802e c->bufpos initialization moved for aesthetics. 2012-03-13 12:59:27 +01:00
antirez
c3e7441dad RDB hashes loading, fixed another bug in the loading of HT-encoded hashes: when the hash entry is too big for ziplist, add the field, then convert. The code used to break before the new entry was inserted, resulting into missing fields in the loaded Hash object. 2012-03-13 11:00:18 +01:00
antirez
c3c856228d RDB hashes loading fixed removing the assertion that failed every time an HT-encoded hash was loaded. 2012-03-13 09:49:11 +01:00
antirez
64b4c33c0b Build dependencies updated. 2012-03-10 12:40:03 +01:00
antirez
f12d0224f3 RDB4 support in redis-check-dump. 2012-03-10 12:38:42 +01:00
antirez
c7d7d0a80f RDB version is no 4, because small hashes are now encoded as ziplists, so older versions of Redis will not understand this format. 2012-03-10 12:35:31 +01:00
antirez
753bb3dcbd More vertical space saved. 2012-03-10 11:19:17 +01:00
antirez
c0caa1cf54 Minor code aesthetic change to use Redis code base style rule of saving vertical space when possible. 2012-03-10 11:09:43 +01:00
antirez
d22248ae99 Removed handling of deprecated hash-max-zipmap-entries nad hash-map-zipmap-value. Pieter is too good with users ;). Better to have them switch to a saner configuration ASAP after the 2.6 upgrade. 2012-03-10 10:41:39 +01:00
antirez
addc032756 Added a top-function comment to rioWriteHashIteratorCursor() to better specify what the function does. Not immediately clear from the name. 2012-03-10 10:36:51 +01:00
antirez
8562798308 Merge conflicts resolved. 2012-03-09 22:07:45 +01:00
antirez
250e7f6908 Instantaneous ops/sec figure in INFO output. 2012-03-08 16:15:37 +01:00
antirez
0823e48fb9 Support for all the redis.conf fields in CONFIG GET. config.c refactored a bit. 2012-03-08 12:14:23 +01:00
antirez
91d664d6ce run_id added to INFO output.
The Run ID is a field that identifies a single execution of the Redis
server. It can be useful for many purposes as it makes easy to detect if
the instance we are talking about is the same, or if it is a different
one or was rebooted. An application of run_id will be in the partial
synchronization of replication, where a slave may request a partial sync
from a given offset only if it is talking with the same master. Another
application is in failover and monitoring scripts.
2012-03-08 10:13:36 +01:00
antirez
44f508f1a8 clusterGetRandomName() generalized into getRandomHexChars() so that we can use it for the run_id field as well. 2012-03-08 10:08:44 +01:00
antirez
4d3bbf3590 By default Redis refuses writes with an error if the latest BGSAVE failed (and at least one save point is configured). However people having good monitoring systems may prefer a server that continues to work, since they are notified that there are problems by their monitoring systems. This commit implements the ability to turn the feature on or off via redis.conf and CONFIG SET. 2012-03-07 18:02:26 +01:00
antirez
c25e7eafef Refuse writes if can't persist on disk.
Redis now refuses accepting write queries if RDB persistence is
configured, but RDB snapshots can't be generated for some reason.
The status of the latest background save operation is now exposed
in the INFO output as well. This fixes issue #90.
2012-03-07 13:05:53 +01:00
antirez
e31b615e62 Better MONITOR output, now includes client ip:port or the lua string if the command was executed by the scripting engine. 2012-03-07 12:12:15 +01:00
antirez
7b845b6228 anetPeerToString() automatically populates ip/port with something that may be provided to the user as output in case of errors. 2012-03-07 11:30:30 +01:00
antirez
9494f1f15b TIME command. 2012-03-07 10:38:01 +01:00
antirez
60893c6cc6 redis-cli: CSV output added, used for the --slave mode. 2012-02-29 17:43:06 +01:00
antirez
b8283ab218 Initial implementation of redis-cli --slave support. 2012-02-29 17:10:21 +01:00
antirez
a950a84303 Ping the slave using the standard protocol instead of the inline one. 2012-02-29 16:33:54 +01:00
antirez
c1db214eeb Better implementation for BRPOP/BLPOP in the non blocking case. 2012-02-29 14:41:57 +01:00
antirez
cd8bdea31b lpush arguments vector rewrite modified for more speed and to memory leak removal. 2012-02-29 13:38:30 +01:00
antirez
b67feecacd Version bumped to 2.9.5 2012-02-29 00:54:52 +01:00
antirez
78d6a22dc3 Better system for additional commands replication.
The new code uses a more generic data structure to describe redis operations.
The new design allows for multiple alsoPropagate() calls within the scope of a
single command, that is useful in different contexts. For instance there
when there are multiple clients doing BRPOPLPUSH against the same list,
and a variadic LPUSH is performed against this list, the blocked clients
will both be served, and we should correctly replicate multiple LPUSH
commands after the replication of the current command.
2012-02-29 00:46:50 +01:00
antirez
eeb34eff52 Added a new API to replicate an additional command after the replication of the currently executed command, in order to propagte the LPUSH originating from RPOPLPUSH and indirectly by BRPOPLPUSH. 2012-02-28 18:03:08 +01:00
antirez
d8b1228bf6 propagate() prototype added to redis.h 2012-02-28 16:20:41 +01:00
antirez
edba65d090 Var renamed into pushGenericCommand() to better reflect what it means. 2012-02-28 16:17:55 +01:00
antirez
ad08d059d0 Added command propagation API. 2012-02-28 16:17:00 +01:00
Jakub Wieczorek
1d6628c088 Fix the build on Mac OS X, where features.h is non-existent 2012-02-26 15:13:05 +01:00
Premysl Hruby
80ff1fc6d0 use gcc sync builtins for memory counter when possible 2012-02-26 11:45:52 +01:00
Premysl Hruby
59132e4212 fix redis-benchmark memory leak 2012-02-26 10:01:27 +01:00
antirez
63505e0b59 Lua_cmsgpack added to Redis scripting. 2012-02-24 15:45:16 +01:00
antirez
f6da155bde redis-benchmark: a few fixes to pipelining implementation. 2012-02-23 15:39:26 +01:00
antirez
b9474282f8 redis-benchmark: Initial support for pipelining. 2012-02-23 15:02:43 +01:00
antirez
62c394e219 unstable version called 2.9.4 2012-02-22 17:44:18 +01:00
antirez
a5bd08487f Fix for issue #306, thanks to tchajed (on github) for the pull request. The original patch was reworked a bit. 2012-02-22 16:07:06 +01:00
antirez
4eb3b3e970 Redis-cli should accept help command even if there is no connection to the server. 2012-02-22 15:16:11 +01:00
antirez
467d703ead Merge remote-tracking branch 'origin/unstable' into unstable 2012-02-22 09:52:29 +01:00
antirez
feb282883b 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:10 +01:00
Pieter Noordhuis
ca2344f991 Solaris has backtrace(3) 2012-02-21 10:20:28 -08:00
Pieter Noordhuis
57be47758e Also force SIGSEGV without HAVE_BACKTRACE 2012-02-21 10:20:01 -08:00
antirez
7c96b467c1 Fixed undefined behavior in *INCR style functions overflow detection. Sorry clang! 2012-02-21 18:26:11 +01:00
antirez
fe7be46025 bzero -> memset 2012-02-21 10:06:04 +01:00
antirez
b66e5add82 The hiredis lib shipped with Redis was updated to latest version. 2012-02-19 20:26:50 +01:00
Pieter Noordhuis
cb598cdd59 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-02-16 17:21:13 +01:00
antirez
a400a9b2d7 Now HINCRBY can detect overflows too. Fix for issue #330. 2012-02-16 16:09:08 +01:00
antirez
6e09ad1c15 Return ASAP from checkClientOutputBufferLimits() if c->reply_bytes is zero. 2012-02-16 12:20:56 +01:00
antirez
48a32944e6 Merge branch 'issue327' into unstable 2012-02-16 09:40:27 +01:00
antirez
3b0600c777 Add stdint.h in endianconv.h to fix issue #336. 2012-02-15 12:21:04 +01:00
antirez
4a701b3801 redis-check-aof is now large files safe also on 32 bit systems. 2012-02-14 19:57:51 +01:00
antirez
120a36f22b 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:24 +01:00
antirez
7a3e372025 endian.c/h -> endianconv.c/h to avoid issues with broken libraries search paths. 2012-02-14 16:11:46 +01:00
antirez
18aa2b87b6 Merge remote-tracking branch 'origin/unstable' into unstable 2012-02-14 16:02:04 +01:00
antirez
6136a16bd1 intset.c endianess fixes. 2012-02-14 15:35:50 +01:00
lsbardel
2f75bbab02 added lua struct c extension 2012-02-13 21:05:21 +00:00
antirez
66d1b021ec ziplist.c endianess fixes, chapter 5. 2012-02-09 17:09:01 +01:00
antirez
cab1105c6e ziplist.c endianess fixes, chapter 4. 2012-02-09 16:36:25 +01:00
antirez
3fa19b7dfc ziplist.c endianess fixes, chapter 3. 2012-02-09 16:28:35 +01:00
antirez
8e0ef249a2 more ziplist.c endianess fixes 2012-02-08 23:20:39 +01:00
antirez
5653847714 ziplist.c fixes for bigendian 2012-02-08 22:59:35 +01:00
antirez
ac834d237a A few small BSD related fixes. 2012-02-08 22:24:59 +01:00
antirez
b129c6df45 debugging messages removed from freeMemoryIfNeeded() 2012-02-08 00:10:20 +01:00
antirez
609baba8a2 Fixes to c->reply_bytes computation, and debug messages to closely study the behavior of memory pressure + slaves + maxmemory + blocked slaves. 2012-02-07 17:41:31 +01:00
antirez
442246dde2 Precision of getClientOutputBufferMemoryUsage() greatily improved, see issue #327 for more information. 2012-02-07 13:05:36 +01:00
antirez
8b7c3455b9 freeMemoryIfNeeded() minor refactoring 2012-02-06 16:56:42 +01:00
antirez
c1ef6ffe8a Also remove size of AOF buffers from used memory when doing the math for freeMemoryIfNeeded() 2012-02-06 16:35:43 +01:00
antirez
7441fcdd56 Redis Manifesto moved from src to root dir 2012-02-05 09:37:08 +01:00
antirez
f6b32c14f4 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-04 14:05:54 +01:00
antirez
355f859134 Use less memory when emitting the protocol, by using more shared objects for commonly emitted parts of the protocol. 2012-02-04 08:58:37 +01:00
antirez
ce8b772be7 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. 2012-02-02 16:30:52 +01:00
antirez
d876678b5e 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:26:20 +01:00
antirez
75eaac5c74 Added a server.arch_bits field instead of computing it at runtime for INFO. 2012-02-02 10:23:31 +01:00
antirez
b80b1c5914 Only incremnet stats for key miss/hit when the key is semantically accessed in read-only. 2012-02-01 21:51:20 +01:00
antirez
de79a2ee12 Make SORT BY <constant> STORE ... to always produce the same output by force sorting, so that we have deterministic replication of this command. 2012-02-01 17:05:45 +01:00
antirez
2c861050c1 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. 2012-02-01 15:22:28 +01:00
antirez
548efd91e5 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. 2012-01-31 16:09:21 +01:00
antirez
8dd19d818f Fixed redis-benchmark --help output typo 2012-01-31 11:43:32 +01:00
antirez
3c08fdae71 64 bit instances are no longer limited to have at max 2^32-1 elements in lists. 2012-01-31 10:35:52 +01:00
antirez
d1c4c94ebf Merge remote-tracking branch 'origin/unstable' into unstable 2012-01-30 10:40:28 +01:00
Salvatore Sanfilippo
eb7d19ed69 Merge pull request #319 from fawek/lua-error-location
Lua reports line numbers off by one in error messages
2012-01-30 01:40:17 -08:00
antirez
89f6f6abcf setKey(): call the higher level wrapper setModifiedKey() instead of touchWatchedKey() even if currently they are exactly the same. 2012-01-30 10:27:50 +01:00
Michal Kwiatkowski
a0bf8d0ad8 SORT with STORE removes key if result is empty. This fixes issue #227. 2012-01-30 07:36:49 +01:00
Jakub Wieczorek
4d776dba3c Lua reports line numbers off by one in error messages 2012-01-29 14:53:49 +01:00
Pieter Noordhuis
80586cb894 Test that zipmap from RDB is correctly converted 2012-01-25 13:28:11 -08:00
antirez
c715c9b8bf Fixed typo in getClientLimitClassByName() 2012-01-25 18:07:56 +01:00
antirez
d329031fad Fixed another possible bug in cluster.c found by clang --analyze. 2012-01-25 16:59:36 +01:00
antirez
9b810f1cde Merge branch 'unstable' into limits 2012-01-25 16:46:53 +01:00
antirez
6710ff24d0 Fixed a non critical bug signaled by clang static analyzer thanks to Mukund Sivaraman for reporting it: there was a not initialized field populating the cluster message header, but it is always fixed at later time before sending the packet. 2012-01-25 16:46:35 +01:00
antirez
c69ad1f24e Merge branch 'unstable' into limits 2012-01-25 10:41:25 +01:00
antirez
ecc5702145 aeCreateEventLoop() cleanup on error unified in a single block (original
patch by Mukund Sivaraman, modified by me to make it simpler and to use
my coding style).
2012-01-25 10:37:32 +01:00
Mukund Sivaraman
caa63a3821 If aeApiCreate() fails, there's probably not much one can do, but in the name of consistency... 2012-01-25 10:27:37 +01:00
antirez
2f0f0d95c0 lenght -> length 2012-01-24 15:33:15 +01:00
antirez
7957c67604 after all closing a client for output buffer limit overcoming is a WARNING level message. 2012-01-24 12:03:48 +01:00
antirez
c8a607f2b6 client-output-buffer-limit documented in redis.conf 2012-01-24 11:23:23 +01:00
antirez
7fe8d49a70 Client output buffer limits: configuration of parameters for the different classes of clients implemented. 2012-01-24 10:43:30 +01:00
antirez
06b3dced99 asyncCloseClientOnOutputBufferLimitReached() now ignores clients with REDIS_CLOSE_ASAP flag already set. Return value of the function changed from int to void since it is not used. Fixed logging of the client scheduled to be closed. 2012-01-24 09:32:39 +01:00
antirez
51669c5ac1 client buffer handling refactoring and optimization 2012-01-23 17:15:49 +01:00
antirez
8c43e66346 actually call the function to async free clients in serverCron(). 2012-01-23 16:17:22 +01:00
antirez
7eac2a75a4 Implementation of the internals that make possible to terminate clients overcoming configured output buffer (soft and hard) limits. 2012-01-23 16:12:37 +01:00
antirez
890da62eea Merge branch 'unstable' into limits 2012-01-23 10:36:07 +01:00
antirez
b362c111da fixed typo in hahs function seed default value. It is no longer used but fixed to retain the old constant as default anyway. 2012-01-22 01:40:23 +01:00
antirez
06c5523a88 typo in comment fixed 2012-01-21 23:34:06 +01:00
antirez
a48c8d873b Fix for hash table collision attack. We simply randomize hash table initialization value at startup time. 2012-01-21 23:30:13 +01:00
antirez
447ebf3bc7 Better looking registers/stack dump 2012-01-20 16:40:43 +01:00
antirez
632da60583 added support to dump registers on crash on Linux x32 2012-01-20 14:37:50 +01:00
antirez
eea8c7a4f8 added support to dump registers on crash on Linux x64 2012-01-20 12:54:15 +01:00
antirez
d4d208595c all the stack trace related functions are now in debug.c. Now Redis dumps registers and stack content on crash. Currently osx supported, adding Linux right now. 2012-01-20 12:20:45 +01:00
antirez
498dc5557c Introduced three client limit classes: normal, slave, pubsub 2012-01-17 12:43:01 +01:00
antirez
3853c16839 Track the length of the client pending output buffers (still to transfer) in a new field in the client structure. 2012-01-17 12:23:25 +01:00
antirez
4aac3ff247 It is now posible to flush all the previous saving points in redis.conf by using a save directive with a single empty string argument, like it happens for CONFIG SET save. 2012-01-16 16:50:24 +01:00
antirez
ebdfad69dc Don't change the replication state if SLAVE OF is called with arguments specifying the same master we are already connected with. This fixes issues #290. 2012-01-16 11:29:47 +01:00
antirez
1596d6a61e Obsolete SDS_ABORT_ON_OOM removed from sds.c 2012-01-16 10:08:33 +01:00
antirez
bd068b15c2 sds.c no longe pre-allocate more than 1MB of free space ahead. This fixes issue #252. 2012-01-16 10:03:38 +01:00
antirez
7faa1f075b added a comment on top of the zslRandomLevel() function 2012-01-16 09:39:04 +01:00
antirez
00010fa96f 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:02:57 +01:00
antirez
d8bd12f984 error in comment fixed 2012-01-11 20:25:51 +01:00
antirez
5db904bdc5 show GCC version in INFO output. 2012-01-10 18:37:16 +01:00
antirez
68fe1b9b99 version bumped to 2.9.3 2012-01-07 12:54:48 +01:00
Pieter Noordhuis
fe45840201 Implements ziplistFind
To improve the performance of the ziplist implementation, some
functions have been converted to macros to avoid unnecessary stack
movement and duplicate variable assignments.
2012-01-03 16:13:42 -08:00
Pieter Noordhuis
ebd85e9a45 Encode small hashes with a ziplist 2012-01-02 22:14:10 -08:00
Pieter Noordhuis
9ea54feef0 string2* functions take a const pointer 2012-01-02 15:24:50 -08:00
antirez
11e0c4c55b 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. 2011-12-31 16:09:46 +01:00
antirez
f42e2f1bd7 Protocol and I/O related defines moved into a separated section of redis.h 2011-12-31 15:37:33 +01:00
antirez
35c6032cfa A few no longer used defines removed from redis.h 2011-12-31 15:34:02 +01:00
antirez
1824e3a3a3 Fixed replication when multiple slaves are attaching at the same time. The output buffer was not copied correctly between slaves. This fixes issue #141. 2011-12-30 19:40:43 +01:00
antirez
256356ffd8 Prevent NaN scores in sorted sets resulting from calls to ZUNIONSTORE and ZINTERSTORE. 2011-12-23 09:27:31 +01:00
antirez
d334281c80 Merge remote-tracking branch 'origin/unstable' into unstable 2011-12-21 17:13:31 +01:00
antirez
e51b79f315 sligthly better AOF related logs 2011-12-21 17:12:23 +01:00
antirez
b941417c1b Log when the child rewriting the AOF is killed by stopAppendOnly() 2011-12-21 16:37:22 +01:00
antirez
1844f9900f server.replstate -> server.repl_state 2011-12-21 12:23:18 +01:00
antirez
f48cd4b90c some RDB server struct fields renamed. 2011-12-21 12:22:13 +01:00
antirez
ff2145adac more AOF server struct fields renamed. 2011-12-21 12:17:02 +01:00
antirez
2c915bcf6d AOF fileds in the global server state, and define names, renamed with more consistent names. More work to do. 2011-12-21 11:58:42 +01:00
antirez
e394114d95 AOF refactoring, now with three states: ON, OFF, WAIT_REWRITE. 2011-12-21 10:31:34 +01:00
antirez
c6ac7d0302 server.appendonly -> server.aof_state, and many comments added in the server global state structure in the process. 2011-12-21 10:05:32 +01:00
antirez
efb6022529 Do not propagate DEBUG LOADAOF 2011-12-20 17:52:57 +01:00
antirez
af77acc310 startAppendOnly() fixed to set server.appendonly to 0 if the start failed. 2011-12-20 17:00:50 +01:00
antirez
fc96409f91 Merge remote-tracking branch 'origin/unstable' into aof-fixes 2011-12-20 10:29:33 +01:00
BigCat
706b32e0e0 Fix issue #247 : Accepting non-integer parameters when shouldn't
Using `getLongFromObjectOrReply` instead of `atoi` if possible.
The following functions are modified.

* lrangeCommand
* ltrimCommand
* lremCommand
* lindexCommand
* lsetCommand
* zunionInterGenericCommand
* genericZrangebyscoreCommand
* sortCommand
2011-12-19 19:48:35 +08:00
antirez
0e59a94728 version bumped to 2.9.2 2011-12-19 10:55:31 +01:00
antirez
0a466a7542 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:16:37 +01:00
antirez
a244a13b4c added assertion in zslInsert() that ensures the inserted element score is not NaN 2011-12-18 11:12:58 +01:00
antirez
24accab2aa Merge remote-tracking branch 'origin/unstable' into unstable 2011-12-16 09:56:12 +01:00
antirez
18d0ef4bf0 ae.c: solved a memory leak with no practical effects (since the event
loop is never destroyed in Redis). Thanks to @anydot for noticing it.
2011-12-16 09:55:06 +01:00
antirez
087f414090 Fix: when aof_write_rewrite is true don't append on the AOF buffer but accumulate the differences for the rewrite. 2011-12-15 20:03:28 +01:00
antirez
e7a2e7c1f7 AOF fixes in the context of replicaiton (when AOF is used by slave) and CONFIG SET appendonly yes/no. 2011-12-15 16:07:49 +01:00
antirez
36dda9554a ae_epoll.c typo introduced in the previous commit fixed. 2011-12-15 11:50:15 +01:00
antirez
e074416be4 Max limit to 10k clients removed, this implements feature request on issue #194 2011-12-15 11:42:40 +01:00
antirez
503d87a818 List connected slaves with ip,port,state information in INFO, as requested by github issue #219 2011-12-14 15:11:11 +01:00
antirez
19951d965a version bumped to 2.9.1 2011-12-13 18:07:21 +01:00
antirez
e2f313899b redis-cli --eval implemented 2011-12-13 16:22:28 +01:00
antirez
54ecc0e777 Hash type AOF rewrite using HMSET. 2011-12-13 11:10:51 +01:00
antirez
7df9b1412b Sorted Set type AOF rewrite using variadic ZADD. 2011-12-13 11:10:46 +01:00
antirez
8d875ccb7a Set type AOF rewrite using variadic SADD. 2011-12-13 11:10:41 +01:00
antirez
38c06fa037 List type AOF rewrite using variadic RPUSH for the linked list encoding. 2011-12-13 11:10:31 +01:00
antirez
5b25009656 Lists AOF rewrite using variadic RPUSH (work in progress) 2011-12-13 11:10:21 +01:00
antirez
fb293ccbdd Fixed a theoretical memory leak with no practical effects in ae_kqueue.c and ae_epoll.c, thanks to magicyang87 for reporting it. 2011-12-07 08:58:29 +01:00
antirez
237194b760 Fixed SORT bugs (issue #224) with regression tests. 2011-12-01 16:08:05 +01:00
antirez
9268a5b5fd usage information updated to reflect the new way to pass options to Redis from the command line. 2011-12-01 13:50:36 +01:00
antirez
27ccb94a02 Even when loglevel is warning the server should log that it started. 2011-12-01 13:45:19 +01:00
antirez
67c6f0f630 Support for command line configuration options for redis-server. 2011-12-01 13:44:53 +01:00
antirez
4c8bd905a0 -h is now alias for --help when running redis-server. 2011-12-01 12:18:22 +01:00
antirez
39ca1713d7 I like when main() is the last function in the file. 2011-12-01 12:15:44 +01:00
antirez
27acd7aa89 Replication bug fixed: now non blocking connect is also forced to follow the configured replication timeout. 2011-11-30 15:35:16 +01:00
antirez
c6f9ee88fa default log level is now notice. 2011-11-30 15:04:40 +01:00
antirez
63fd13996d show initial querybuf bytes on querybuf overflow. 2011-11-28 11:12:55 +01:00
antirez
e7ef418ccd two new AOF related INFO fields that can be interesting information for debugging. 2011-11-28 11:04:03 +01:00
antirez
3e0a975e07 log client protocol errors for log level >= verbose 2011-11-25 16:09:34 +01:00
Salvatore Sanfilippo
07ac2daaaa Merge pull request #209 from woowenjie/unstable
clean REDIS_DIRTY_CAS when discard Command runs. otherwise the next MULT...
2011-11-25 03:13:10 -08:00
woowenjie
f371e721fa clean REDIS_DIRTY_CAS when discard Command runs. otherwise the next MULTI/EXEC may fail in the same RedisClient 2011-11-25 10:34:05 +08:00
antirez
fa5af017d9 better bug report info on crash 2011-11-24 15:47:26 +01:00
antirez
45e7a1ce00 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:04:42 +01:00
antirez
2c74a9f948 last executed command in CLIENT LIST output. 2011-11-24 14:56:34 +01:00
antirez
3c95e7212e new counter in INFO output: rejected_connections with number of dropped connections because of maxclients limit reached. 2011-11-23 18:38:12 +01:00
antirez
1bcfa0f643 More fixes in the Redis command table, to make sure all the keys are detected by Redis Cluster. 2011-11-22 14:27:32 +01:00
antirez
39da5d1f21 Fixed command table for SETEX and PSETEX causing the expire time to be hashed by Redis cluster instead of the key. 2011-11-22 10:16:15 +01:00
antirez
7501c66f2e comment describing the Redis command table enhanced 2011-11-22 10:13:45 +01:00
antirez
afd0f06b75 Fixed bug in getClientInfoString() that was not rendering the N (no flags) special flag correctly. 2011-11-21 16:19:30 +01:00
antirez
becf5fdb0c Close client connection and log the event when the client input buffer reaches 1GB. 2011-11-21 16:17:51 +01:00
antirez
6621b8ffa1 show active events in client file descriptor in CLIENT LIST. 2011-11-21 16:06:03 +01:00
antirez
f14479c796 new ae.c API to get current events by file descriptor. 2011-11-21 16:05:29 +01:00
antirez
491c1c4e04 added output list and buffer length, query buffer size, to CLIENT LIST output. 2011-11-21 15:54:49 +01:00
antirez
17d25a33e2 code generating the CLIENT LIST output refactored to have a function that is able to render a single client into a client info string. 2011-11-21 15:34:32 +01:00
antirez
08a879af6e Added sdscatsds() to sds.c/h 2011-11-21 15:34:00 +01:00
antirez
7e14a20801 Fixed a comment typo in the command table. 2011-11-21 10:55:52 +01:00
Salvatore Sanfilippo
794e6ce14f Merge pull request #173 from jasondavies/typo
Fix some minor typos.
2011-11-18 05:34:56 -08:00
antirez
e41677b4cf prevent (more) commands from Lua scripts 2011-11-18 14:23:38 +01:00
antirez
4ab8695d53 New script timeout semantics and SCRIPT KILL implemented. SHUTDOWN NOSAVE and SHUTDOWN SAVE implemented. 2011-11-18 14:10:48 +01:00
Chris Lamb
5ae979bf57 Fix crash on SPARC due to improper alignment of allocated memory
I believe that you should be able to drop 'defined(__sun)' completely
from this clause, as Solaris on x86 hardware probably does not have
strict alignment requirements, but I don't have a way to test that.

Thanks to Jurij Smakov <jurij@wooyd.org>.

Signed-off-by: Chris Lamb <lamby@debian.org>
2011-11-16 17:21:16 +00:00
Pieter Noordhuis
42c6a5da3d Don't force rebuild when params didn't change 2011-11-16 17:49:06 +01:00
Salvatore Sanfilippo
32adb53156 Merge pull request #192 from pietern/makefile
Add separate clean/distclean targets to Makefile
2011-11-16 01:29:42 -08:00
Pieter Noordhuis
5bb2c88e94 Rebuild source when allocator changes
To do so, the Makefile stores the contents of the MALLOC environment
variable in a file named .make-malloc. When the contents of this file
and the MALLOC variable are not equal, it forces a rebuild of the Redis
source tree.

A side-effect of this change is that choosing an allocator can now be
done using the single MALLOC variable instead of USE_TCMALLOC,
USE_JEMALLOC and so forth. These variables continue to work for
backwards compatibility.
2011-11-15 13:09:34 -08:00
Pieter Noordhuis
4b8a63941d Rebuild deps/ and src/ when ARCH changes
This change moves the build instructions for dependencies to a separate
Makefile in deps/. The ARCH environment variable is stored in a
.make-arch file in the same directory as the Makefile. The contents of
this file is read and compared to the current ARCH, and, on a mismatch
triggers rebuilding the entire source tree.

When file .make-arch exists and matches with ARCH from the environment,
the dependencies are assumed to already be built.

The new "clean" target only cleans the Redis source tree, not its
dependencies. To clear the dependencies as well, the "distclean" target
can be used.
2011-11-15 12:41:35 -08:00
Pieter Noordhuis
321a0440c0 Use CCLINK as last argument 2011-11-15 09:39:38 -08:00
Pieter Noordhuis
61c0e893aa CCLINK already includes ALLOC_LINK 2011-11-15 09:36:13 -08:00
Salvatore Sanfilippo
7b81e5a16c Merge pull request #181 from redsquirrel/unstable
Fixing inject: it was failing when there was 1 or >2 sources
2011-11-15 06:36:53 -08:00
antirez
68bfe993c8 HINCRBYFLOAT implemented 2011-11-15 15:09:39 +01:00
antirez
d4a3cfed9c Merge branch 'unstable' into incrbyfloat 2011-11-14 15:59:56 +01:00
antirez
d93f9a8644 string to number API is now more strict not accepting spaces before or after the number. A few tests converted to match the new error messages using the word float instead of double. 2011-11-14 15:34:44 +01:00
antirez
5244d6e54e rewrite INCRBYFLOAT as SETs for AOF/replication 2011-11-14 10:15:13 +01:00
antirez
5574b53eae INCRBYFLOAT implementation 2011-11-12 19:27:35 +01:00
antirez
4be855e757 Fixed issues with expire introduced with latest millisecond resolution feature. Many time_t were not converted to long long, and one time() call was not replaced with mstime(). 2011-11-12 01:04:27 +01:00
antirez
3570629f90 set default client timeout to zero inside redis.h as well 2011-11-11 17:18:35 +01:00
antirez
12d293ca6e high resolution expires API modified to use separated commands. AOF transation to PEXPIREAT of all the expire-style commands fixed. 2011-11-10 17:52:02 +01:00
Dave Hoover
57f8021cb2 Fixing inject: it was failing when there was 1 or >2 sources 2011-11-09 19:06:12 -06:00
antirez
dab5332f95 Fixed a few typos 2011-11-09 21:59:27 +01:00
antirez
bdbdb02edb Fixed bug breaking rdbSaveMillisecondTime() in 32 bit systems. Thanks to @anydot (Přemysl Hrubý) 2011-11-09 18:47:48 +01:00
antirez
52d46855d9 TTL, EXPIRE and EXPIREAT now support the milliseconds input/output form 2011-11-09 18:05:35 +01:00
antirez
b0b74486e1 use "EXPIREAT ... ms" form when rewriting the AOF 2011-11-09 17:20:14 +01:00
antirez
7dcc10b65e Initial support for key expire times with millisecond resolution. RDB version is now 3, new opcoded added for high resolution times. Redis is still able to correctly load RDB version 2. Tests passing but still a work in progress. API to specify milliseconds expires still missing, but the precision of normal expires is now already improved and working. 2011-11-09 16:51:19 +01:00
antirez
14ed10d957 dict set/get macros for integers fixed. 2011-11-09 13:39:59 +01:00
antirez
2c2b208537 added mstime() to get UNIX time in milliseconds. 2011-11-09 00:03:03 +01:00
antirez
6c578b764a dict.c: added macros to get signed/unsigned integer values from hash
entry. Field name of hash entry union modified for clarity.
2011-11-08 23:59:53 +01:00
antirez
b28d0461b4 32bit build fixed, broken by a previous commit fixing build on Solaris 2011-11-08 21:00:52 +01:00
antirez
aa9a61ccd7 dict.c: added macros in dict.h to set signed and unsigned 64 bit values directly inside the hash entry without using additional memory. 2011-11-08 19:41:29 +01:00
antirez
c0ba9ebe13 dict.c API names modified to be more coincise and consistent. 2011-11-08 17:07:55 +01:00
antirez
71a50956b1 dict.c: added two lower level methods for directly manipulating hash entries. This is useful in order to set 64 bit integers as values directly inside the hash entry (in order to save memory), without casting, and even in 32 bit builds. 2011-11-08 16:57:20 +01:00
antirez
66d8818cb7 Merge branch 'unstable' into ttlres 2011-11-08 16:15:08 +01:00
antirez
b90314588f useless double if removed. 2011-11-08 11:26:06 +01:00
antirez
b0a2e34059 yet another #if REDIS_MBULK_BIG_ARG removed. 2011-11-08 11:24:12 +01:00
antirez
53272781d0 Multi bulk optimization for creating big objects without copying data is no longer optional, #ifdefs removed. Also debugging messages removed. 2011-11-08 11:22:40 +01:00
antirez
65330badb9 hiredis/redis changes for speed with big payloads: read buffer size set
to 16k, request buffer size is no longer destroyed when emtpy and large
(better fix needed). Redis clients static output buffer set to 16k as
well.
2011-11-08 10:59:59 +01:00
antirez
d9747b496e redis-benchmark: ability to run selected tests. Better help with examples. 2011-11-07 11:29:37 +01:00
antirez
7b86f5e6d5 csv output for redis-benchmark 2011-11-04 14:49:24 +01:00
antirez
410dfe90b2 PING / MSET benchmarks enabled again. 2011-11-04 11:20:19 +01:00
antirez
ca908473e8 A comment moved a few lines for clarity. 2011-11-04 11:18:15 +01:00
antirez
94d490b9f6 Added a define to set the size threshold to enable the multi bulk parsing big objects optimization. 2011-11-04 11:16:11 +01:00
antirez
826b5beb9c further optimizations for the multi bulk protocol parsing code when big objects are transmitted to Redis. 2011-11-03 15:53:40 +01:00
antirez
9217095572 optimized object creation in multi-bulk protocol parsing 2011-11-02 17:30:19 +01:00
antirez
b8d743e181 sdsIncrLen() / sdsMakeRoomFor() used to avoid copying to intermediate buffer while reading the client query. 2011-11-02 16:52:45 +01:00
antirez
a54806ac6a testhelp.h now exits with retcode 1 on failed tests. 2011-11-02 16:52:10 +01:00
antirez
dd5fbedf7b I/O buffer length enlarged 2011-11-02 16:51:33 +01:00
antirez
d0b2a9b223 sdsMakeRoomFor() exposed as public API. sdsIncrLen() added. Both the changes make it possible to copy stuff from a system call to an sds buffer without the need of an additional buffer and copying overhead. 2011-11-02 16:50:59 +01:00
antirez
3526724594 added a comment to sdsMakeRoomFor() to make it clear what the function actually does. 2011-11-02 16:09:14 +01:00
antirez
6a7841eb09 added an union in the dict.h structure to store 64 bit integers directly into hash table entries. 2011-11-02 15:28:45 +01:00
Jason Davies
b91cbf66bb Fix minor typos. 2011-11-01 19:58:09 +00:00
antirez
d569f39a77 removed the vmpointer structure that is no longer user in Redis >= 2.5.x 2011-10-31 15:47:12 +01:00
Salvatore Sanfilippo
404cd6450d Merge pull request #170 from bnoordhuis/fix-sunos-build
build: fix sunos build, compile lua with __C99FEATURES__=1
2011-10-31 03:21:09 -07:00
antirez
aeecbdfae3 1fe4cd5 2011-10-31 11:14:24 +01:00
antirez
8996bf7720 7c6da73 2011-10-31 11:13:28 +01:00
antirez
58732c23d5 maxclients configuration is now implemented dealing with the actual process rlimits. Setting maxclients to 0 no longer makes sense and is now invalid, the new default is 10000.
See issue #162 for more information.
2011-10-31 10:49:27 +01:00
antirez
1eceb85ebc It is now possible to disable password authentication via CONFIG SET. Thanks to Jan Oberst. This closes issue #171. 2011-10-31 09:57:06 +01:00
Ben Noordhuis
b83e95830f build: fix sunos build, compile lua with __C99FEATURES__=1 2011-10-30 03:20:00 +00:00
antirez
db6a2e7f78 Fixed a memory leak in redis-cli.c 2011-10-28 17:43:04 +02:00
antirez
e1cf460cf1 sds.c single quotes support 2011-10-28 17:31:40 +02:00
antirez
d8ba159b6c use the more generic -BUSY error for idle scripts 2011-10-27 20:56:12 +02:00
antirez
115e3ff39e If a Lua script executes for more time than the max time specified in the configuration Redis will log a warning, and will start accepting queries (re-entering the event loop), returning -SLOWSCRIPT error for all the commands but SHUTDOWN that remains callable. 2011-10-27 14:49:10 +02:00
Nathan Florea
bb48c5fa67 Set errno to 0 before calling strtol. 2011-10-26 13:01:24 +02:00
antirez
b508aeb994 Clear the AOF rewrite scheduled flag once an AOF rewrite is triggered. Fix for issue #161, probably fixing 159 as well. 2011-10-26 12:53:30 +02:00
antirez
e089e61019 Don't timeout scripts if the instance is a slave. 2011-10-25 19:54:10 +02:00
antirez
e5abf6ef19 SCRIPT LOAD now returns the SHA1 instead of +OK 2011-10-25 14:46:15 +02:00
antirez
8cb8d417b1 Lau scripts default max execution time set to 5 seconds. 2011-10-25 12:10:15 +02:00
antirez
e8c993f0fb Fixes for the scripting refactoring and new commands. Tests for the new features. 2011-10-25 11:19:15 +02:00
antirez
a9b07ac459 SCRIPT LOAD implemented, scripting eval command refactoring. 2011-10-25 10:25:59 +02:00
antirez
070e39454d SCRIPT command for introspection and control of the scripting environment. 2011-10-24 22:47:00 +02:00
antirez
f013f40003 Fixed a few warnings compiling on Linux. 2011-10-23 10:57:01 +02:00
antirez
9e6a9f30ea A past commit removed the inclusion of redis.h from rdb.c, completely breaking 32 bit builds under Linux. 2011-10-23 10:42:16 +02:00
antirez
9ed32ba083 Redis.call is now split into two variants of the same function. Redis.call will raise an error by default. Redis.pcall will return the error object instead. 2011-10-20 16:02:23 +02:00
antirez
73fac227a0 use signalModifiedKey to set the key as dirty in the context of WATCH for both MIGRATE and RESTORE. 2011-10-20 11:17:30 +02:00
antirez
8f2af26c2c Merge remote-tracking branch 'origin/unstable' into unstable 2011-10-19 16:42:35 +02:00
antirez
15108778d5 JSON support for Lua scripting, based on work from @lp, thanks!. We are using the good and fast cjson by Mark Pulford. 2011-10-19 16:42:10 +02:00
smly
046f70f758 Fixed a small memory leak I found with valgrind 2011-10-18 20:18:26 +09:00
antirez
76e772f39a Return from syncWithMaster() ASAP if the event fired but the instance is no longer a slave. This should fix Issue #145. 2011-10-18 11:15:11 +02:00
antirez
6856c7b4d6 First implementation of the ASKING command. Semantics still to verify. 2011-10-17 17:35:23 +02:00
antirez
e0aab1fc79 MIGRATE +NOKEY error was missing the final CRLF causing a protocol error. 2011-10-17 16:44:08 +02:00
antirez
bfbc16ae83 Fixed a typo causing segfault on MIGRATE 2011-10-17 16:39:05 +02:00
antirez
13cd1515f9 FLUSHALL now prevents rdbSave() from resetting the dirty counter, so that the command will get replicated and put inside the AOF. This fixes issue #142 2011-10-17 10:31:47 +02:00
antirez
42a6fcd6c5 FLUSHALL will only perform a blocking SAVE if RDB persistence is configured. 2011-10-17 10:31:34 +02:00
antirez
6d61e5bf5b Exit with Fatal error at startup if the RDB file signature or version is wrong.
Ref: issue #103
2011-10-14 16:59:38 +02:00
antirez
2e63cfe20d redis-check-dump: RDB version 2 now supported. 2011-10-14 16:52:52 +02:00
antirez
80ad7189e8 More informative error when DEBUG RELOAD fails. 2011-10-14 14:31:33 +02:00
antirez
dd9ad57062 redis-trib: fix for a slot allocation bug. 2011-10-13 15:16:03 +02:00
antirez
2b9ce0192e small comment added 2011-10-13 14:51:29 +02:00
antirez
ab52d1f4a8 Fix for issue #132. Now AUTH raises an error if no server password is configured. 2011-10-10 22:21:17 +02:00
Salvatore Sanfilippo
70cb03e172 Merge pull request #126 from florean/unstable
Unlink Unix socket file on shutdown
2011-10-10 13:05:16 -07:00
Nathan Florea
8523876503 Added a config directive for a Unix socket mask
Added a configuration directive to allow a user to specify the
permissions to be granted to the Unix socket file.  I followed
the format Pieter and Salvatore discusses in issue #85 (
https://github.com/antirez/redis/issues/85).
2011-10-10 11:21:15 -07:00
antirez
d83eda48e9 Issue #131. stime/utime reported in INFO was inverted. Fixed thanks to Didier Spezia. 2011-10-10 15:31:55 +02:00
antirez
4ab18a3331 Fix for bug #128 about the RENAME command. 2011-10-10 15:21:19 +02:00
Nathan Florea
56209f720a Unlink Unix socket file on shutdown 2011-10-09 00:46:03 -07:00
antirez
ff15dba093 not used parameter for redisLog() removed. Error message grammar fixed.
Thanks to @ardsrk.
2011-10-08 10:59:04 +02:00
antirez
d38ef52085 Redis Cluster: process node to node CLUSTERMSG_TYPE_PUBLISH messages and send it to the local clients. 2011-10-07 16:34:16 +02:00
antirez
c563ce463b propagate PUBLISH messages using the redis cluster nodes bus. Still need to process the incoming packets of that type. Work in progress. 2011-10-07 15:37:34 +02:00
antirez
623131d408 Totally hackish and dirty, but working, support for Redis Cluster in redis-cli 2011-10-05 19:55:33 +02:00
antirez
9465d83efd A node can populate a slot if a message from a trusted slot is received claiming ownership of this slot, that is currently empty or served by a node in FAIL state. However this feature was broken since calling clusterAddSlot() was not enough as the slot bit is already set in the node that pong us. We need to directly alter the table. This commit fixes the issue. 2011-10-05 17:40:02 +02:00
antirez
2aa26d2a63 CONFIG SET/GET support for loglevel 2011-10-05 16:08:35 +02:00
antirez
ad7a86fbe0 just minor aesthetic changes to cluster.c 2011-10-05 16:02:45 +02:00
antirez
eab0e26e03 replaced redisAssert() with redisAssertWithInfo() in a shitload of places. 2011-10-04 18:43:03 +02:00
antirez
bab205f787 redisAssertWithClientInfo() is now redisAssertWithInfo() that is also able to report an optional object. The client is also optional. Specifying NULL will prevent dumping the not available information (either client or object). 2011-10-04 18:05:26 +02:00
antirez
e3e6993510 Introduced a redisAssert() variant that is able to show information about the client in the context where the failed assertion was detected. 2011-10-04 17:22:29 +02:00
antirez
909aee2c6c redis-trib: create subcommand fixed calling node info loading method. Was needed after recent refactoring. 2011-10-04 15:53:07 +02:00
antirez
0bb5160cb0 Revert "Use the new install script as make install target. Message about install script requiring root changed a bit to make it more evident."
After talking with Pieter he changed my mind about this, it is better to
have a simpler install script that works everywhere, and the complex one
can be always executed if needed by hand. We'll make possibly a new
target for the full featured installation script, and even suggest it
after a Make install.

This reverts commit f1e60d7530.
2011-10-03 16:04:44 +02:00
antirez
37d650032a Rewrite MIGRATE as DEL for AOF/replication. Also increment the dirty counter to both force replication and persistence. 2011-10-03 15:51:10 +02:00
antirez
2a95c944ff increment server.dirty in restore command to make sure it is replicated and increments the dirty count for persistence concerns. 2011-10-03 15:45:14 +02:00
Salvatore Sanfilippo
cd73df62af Merge pull request #114 from pietern/unstable-zcount
Use rank information to compute ZCOUNT
2011-10-03 06:20:23 -07:00
Pieter Noordhuis
0cfc894066 Remove ZCOUNT branches from generic RANGEBYSCORE code 2011-10-03 14:23:31 +02:00
Pieter Noordhuis
62d774e5ba Use element rank instead of iterating in ZCOUNT 2011-10-03 14:14:43 +02:00
antirez
f1e60d7530 Use the new install script as make install target. Message about install script requiring root changed a bit to make it more evident. 2011-10-03 13:28:54 +02:00
antirez
13c7e5ef29 Exact variant of CRC16 specified into crc16.c 2011-10-02 14:05:29 +02:00
antirez
66c146592a when processing gossip packets make sure to also update the node bitmap when associating slots to nodes. Fixed simply using the appropriate helper function to add a slot. 2011-10-01 15:11:07 +02:00
antirez
7112580cb3 fixed a few problems with redis-trib resharding. 2011-10-01 01:31:46 +02:00
antirez
a0189bbe75 redis-trib: initial working implementation of cluster rehashing, more work needed to make it more correct, more reliable. 2011-09-30 22:18:07 +02:00
antirez
d38d2fdfdc Fixed two bugs in the CLUSTER SETSLOT ... NODE subcommand 2011-09-30 22:17:24 +02:00
antirez
9a38df8799 redis-trib: actual slot migration work in progress, more work needed. 2011-09-30 19:21:36 +02:00
antirez
c5954c1966 Clear the importing status from the slot if a CLUSTER SETSLOT command permanently assigns the slot to the importing node. 2011-09-30 19:20:56 +02:00
antirez
6c0047c430 redis-trib: better slots allocation strategy for resharding 2011-09-30 18:41:25 +02:00
antirez
841cd7684c redis-trib: initial slots allocation strategy, still to improve for better balancing when there are just a few slots to move. 2011-09-30 18:28:51 +02:00
antirez
85b514d165 redis-trib: reshard command work in progress 2011-09-29 16:06:49 +02:00
antirez
9514aa3251 redis-trib: minor refactoring creating a method to load the cluster information starting from a single node 2011-09-29 15:45:10 +02:00
antirez
5d8f25da36 redis-trib: don't crash loading node info for nodes without assigned slots 2011-09-29 15:31:02 +02:00
antirez
3b5289a04c added comment about SETSLOT NODE form. 2011-09-29 15:26:01 +02:00
antirez
7afc3a9611 Fixed command table for RESTORE to make it accepting keys only for the right slots when cluster is enabled. 2011-09-29 15:14:06 +02:00
antirez
d7021b081b redis-trib: added cluster state to node info string 2011-09-29 15:04:23 +02:00
antirez
92dd76c8ee redis-trib: all node information into a single hash 2011-09-29 14:44:27 +02:00
antirez
b08c9dd280 redis-trib: when loading node info also fetch the output of CLUSTER INFO. 2011-09-29 13:18:09 +02:00
antirez
f639f99180 redis-trib cluster check command: check that all the 4096 slots are covered 2011-09-29 12:50:46 +02:00
antirez
0cae060a26 Compilation fixed on OpenBSD making sure that _XOPEN_SOURCE is set to 700 in fmacros.h 2011-09-29 10:20:03 +02:00
antirez
d3f7fbfc09 initial node loading info code for redis-trib 2011-09-28 19:08:35 +02:00
antirez
1ef8b0a96d show node with myself flag always as connected in CLUSTER NODES output. 2011-09-28 18:28:36 +02:00
antirez
002d5626e0 Scripting engine now only loads selected libraries, using code originally contributed by @loopole. 2011-09-27 18:46:23 +02:00
antirez
9f772cc237 Return errors if a write command is called inside a Lua script after a random command was called. See https://github.com/antirez/redis/issues/95 for more information. 2011-09-27 15:30:31 +02:00
antirez
15ef605340 Deny commands flagged as REDIS_CMD_NOSCRIPT from Lua scripts 2011-09-27 13:57:10 +02:00
antirez
b60ed6e812 added the NOSCRIPT and RANDOM command flags 2011-09-27 13:45:46 +02:00
antirez
5d02b00f56 command table refactoring to make it simpler adding new flags 2011-09-26 15:40:39 +02:00
antirez
e108bab043 Lua math.random and math.randomseed replaced with our own version based on redisSrand48(). Seed initialized to the same value at every EVAL/EVALSHA call. 2011-09-23 15:40:58 +02:00
antirez
69786b262d Defined macro with bigger number that redisLrand48() can output. 2011-09-23 15:06:07 +02:00
antirez
cbdac04a5e libc neutral random function derived from a drand48() implementation added. Will be used to replace Lua's math.random implementation. 2011-09-23 14:51:48 +02:00
antirez
f96a8a8054 rioInitWithFile nad rioInitWithBuffer functions now take a rio structure pointer to avoid copying a structure to return value to the caller. 2011-09-22 16:00:40 +02:00
antirez
69cecb511f make sure to return just 1 for rio.c write when the target is a buffer, as we do when the target is a file. 2011-09-22 15:54:08 +02:00
antirez
4c0462972e comment on top of the _rio structure modified for correctness as actually fwrite/fread semantics is different in general, but was 0/1 in our old usage before rio.c as we always used 1 as number items, and the actual number of bytes to read as item length. 2011-09-22 15:47:48 +02:00
antirez
f9c6f39b2b merge conflicts resolved 2011-09-22 15:15:26 +02:00
Salvatore Sanfilippo
7c748c061e Merge pull request #97 from jvain/redis-cli
redis-cli segfaults with single numeric argument greater than zero
2011-09-21 13:32:24 -07:00
Juri M. Vainonen
aee7f99760 fixed a small bug that caused redis-cli to segfault when given single numeric parameter greater that zero. 2011-09-21 23:22:14 +03:00
Salvatore Sanfilippo
ac1f6fd07a Merge pull request #78 from vambo/patch-1
Corrected typo in documentation for R_Zero, R_PosInf, R_NegInf, R_Nan;
2011-09-20 02:00:58 -07:00
Salvatore Sanfilippo
5bae401107 Merge pull request #79 from annulen/mac_ppc
Fixed compilation on Mac/PPC
2011-09-20 01:58:55 -07:00
Salvatore Sanfilippo
18be93e0a4 Merge pull request #74 from kmerenkov/issue_620
[issue 620] don't segfault if number of arguments is less than 1
2011-09-20 01:55:34 -07:00
antirez
eef17490d4 Include port number in error when can't bind lisetning port on startup. 2011-09-20 10:48:21 +02:00
antirez
e7aec180e8 Fixed comment typo 2011-09-19 17:50:07 +02:00
antirez
47e7f9acbd Comment out things in bio.c that are currently not useful but that may be useful in the future. 2011-09-19 17:06:27 +02:00
antirez
77ca5fcba6 Emit a log message when AOF fsync is still in progress but we are forced to write from the main thread since two seconds already elapsed. 2011-09-19 16:52:13 +02:00
antirez
a60b397b6d use aof_fsync wrapper instead of fsync(2) in bio.c 2011-09-16 15:53:01 +02:00
antirez
af4707a80c Merge remote-tracking branch 'origin/unstable' into bg-aof-2 2011-09-16 12:36:33 +02:00
antirez
a3fcd6bc21 fixed flushAppendOnlyFile() function prototype to reflect the new implementation, fixing compilation. 2011-09-16 12:36:17 +02:00
antirez
db3c2a4fb4 postpone the AOF fsync if policy is everysec and there is a background fsync already going. 2011-09-16 12:35:12 +02:00
antirez
9a35eb22bf Fixed typo preventing compilation 2011-09-16 12:11:48 +02:00
Pieter Noordhuis
bdbf3acff5 Enforce upper bound for number of requests in redis-benchmark 2011-09-16 11:25:00 +02:00
Pieter Noordhuis
5f54a5e615 Fix AOF race that may duplicate commands 2011-09-16 11:12:31 +02:00
antirez
4b77700a33 Added aof_backgronud_fsync() function, and use it in the bacground rewrite done handler when the fsync policy is everysec. 2011-09-16 11:08:39 +02:00
antirez
96674b6d95 Fixed a bug in the average latency metering of redis-cli --latency 2011-09-15 19:33:24 +02:00
antirez
43071993e1 Implemented --latency in redis-cli 2011-09-15 19:28:00 +02:00
antirez
9fc1e1b1d4 REDIS_BIO_AOF_FSYNC implemented 2011-09-15 18:25:53 +02:00
antirez
b39a4d0b39 fixed a problem in bioOlderJobType() when there are no jobs of the specified type. Now the function returns 0 when this happens. 2011-09-15 18:23:58 +02:00
antirez
fbb23ce496 some more comment about bio.c design 2011-09-15 18:23:11 +02:00
antirez
1317b7c233 Remove backgroud jobs from the queue only when the processing was completed, and not just started. 2011-09-15 18:21:27 +02:00
antirez
50be9b97bc Use a different thread for every different type of background job 2011-09-15 18:21:16 +02:00
antirez
91de5421b2 Better comments for bioWaitPendingJobsLE 2011-09-15 18:21:02 +02:00
antirez
fde4e4c428 Background I/O library enhanced so that the main thread can query for the number of pending jobs of the specified type. 2011-09-15 18:20:53 +02:00
antirez
7feb90fa37 enable zmalloc thread safety support now that we have the bio.c background thread. 2011-09-14 19:09:48 +02:00
antirez
7cfeb8cccf Optimize LRANGE to scan the list starting from the head or the tail in order to traverse the minimal number of elements. Thanks to Didier Spezia for noticing the problem and providing a patch. 2011-09-14 15:10:28 +02:00
antirez
6468a6faad Don't replicate/AOF SAVE 2011-09-14 13:09:25 +02:00
antirez
986630afad use bio.c instead of libeio for closing the AOF file in background. Some comment added and other minor changes. 2011-09-13 18:27:08 +02:00
Pieter Noordhuis
b454056d94 Asynchronously close old file after BGREWRITEAOF 2011-09-13 18:17:06 +02:00
antirez
b1c892f3f6 test background close operation removed 2011-09-13 16:57:18 +02:00
antirez
d47ded66ce make bio_list static as well 2011-09-13 16:56:43 +02:00
antirez
b147cb9e1a debug message removed 2011-09-13 16:53:33 +02:00
antirez
b7c739b0dd use pthread_cond_signal() to make sure the background thread will process the job. 2011-09-13 16:21:12 +02:00
antirez
8ea2dfd75c typo fixed in bio.c 2011-09-13 16:19:37 +02:00
antirez
f67e338d5c Removed no longer useful fields in the redis server structure 2011-09-13 16:17:45 +02:00
antirez
8f61a72fa8 add background jobs initialization to Redis main init function 2011-09-13 16:10:26 +02:00
antirez
f81a5f54d8 bio.c typos fixes to make it compile 2011-09-13 16:09:06 +02:00
antirez
02925dd96e bio.o added to redis-server objects 2011-09-13 15:59:48 +02:00
Pieter Noordhuis
d1ec6c8b22 Speed up protocol synthesis for AOF 2011-09-13 12:23:50 +02:00
Pieter Noordhuis
f990782f4d Re-use AOF buffer when it is small enough 2011-09-13 12:22:54 +02:00
Pieter Noordhuis
a57225c2cf Fix indent 2011-09-13 12:22:39 +02:00
antirez
4f06867afe added a newline for code readability 2011-09-13 12:21:54 +02:00
Pieter Noordhuis
297322481d Avoid unnecessary calls to time(3) 2011-09-13 12:18:55 +02:00
antirez
3bc89500d2 Remove the write handler only if there are no longer objects in the output queue AND if the static buffer is empty. This bug was the cause of a possible server-stop-responding-to-client bug under some specific work load. Thanks to Pieter Noordhuis for spotting and fixing it. 2011-09-12 11:06:28 +02:00
antirez
48082cc044 fixed typos in the comments of rpoplpushHandlePush() 2011-09-12 10:04:23 +02:00
Hampus Wessman
c47d152c8d Fix crash when chaining brpoplpush with other blocking commands. 2011-09-07 19:08:48 +02:00
Konstantin Tokarev
ef9444e0d2 Fixed compilation on Mac/PPC
Applied patch from Issue 119 provided by 
pahowes@gmail.com
2011-09-01 22:16:20 +04:00
vambo
c74b7c7730 Corrected typo in documentation for R_Zero, R_PosInf, R_NegInf, R_Nan; 2011-08-26 21:40:18 +03:00
antirez
11aaf52313 Auto rewrite integer overflow fixed. Thanks to Gaurav for finding it (see issue 602 on google code), and Pieter Noordhuis for tracing it. 2011-08-09 11:46:18 +02:00
Konstantin Merenkov
be6f639564 [issue 620] don't segfault if number of arguments is less than 1 2011-08-02 17:05:04 +04:00
Hampus Wessman
64f201c2aa Fix crash when pipelining several blocking commands. 2011-07-28 13:50:44 +02:00
Pieter Noordhuis
bb831c313c Fix adding bulk reply when getcwd fails 2011-07-27 16:22:28 +02:00
Pieter Noordhuis
4d6bf65c42 Wait for Lua to be built before linking redis-server 2011-07-27 14:47:02 +02:00
Pieter Noordhuis
2d7162bb1d HDEL: Abort deleting fields when hash is removed 2011-07-27 12:29:40 +02:00
antirez
80e87a461a Close the listening sockets. Apparently this allows faster restarts. 2011-07-22 12:11:40 +02:00
antirez
adae85cdae prepareForShutdown() fixed for correctness regarding what to do with AOF and RDB persistence on exit. 2011-07-22 11:52:21 +02:00
antirez
f790bd028c Added a 'runtest' script that is responsible to check if Tcl is available and run the test. This is invoked from Makefile as well. 2011-07-15 17:20:57 +02:00
antirez
319bb48c01 top level Makefile now just a proxy. Doing make clean inside src now does a full clean including deps, not just Redis source. Thanks to Pieter for the top level Makefile proxy trick. 2011-07-13 19:15:22 +02:00
antirez
4dd444bb4a Replicate EVALSHA as EVAL taking a dictionary of sha1 -> script source code. 2011-07-13 15:38:03 +02:00
antirez
70ecddc9f4 scripting.txt file removed, content merged into the TODO file 2011-07-13 12:04:02 +02:00
antirez
331bf3292f when building redis-server use LINK and not CC as prefix in the output 2011-07-12 12:58:32 +02:00
antirez
5f54619494 Fix for a typo left after merging. 2011-07-12 12:43:05 +02:00
antirez
0681c5ad84 master branch merged into scripting. 2011-07-12 12:39:16 +02:00
antirez
e6fcb5b30d make test depends on redis-check-aof as well. 2011-07-11 14:48:45 +02:00
antirez
6b91a11e3e removed --file argument from test invocation inside Makefile 2011-07-11 13:46:09 +02:00
antirez
52c863ddac use tclsh8.5 not only in which but also in the actual test execution. 2011-07-11 11:18:46 +02:00
antirez
d4edba6f43 explicitly use tclsh8.5 to run the test 2011-07-11 11:17:05 +02:00
antirez
09e2d9eeba Take a pointer to the relevant entry of the command table in the client structure. This is generally a more sounding design, simplifies a few functions prototype, and as a side effect fixes a bug related to the conversion of EXPIRE -1 to DEL: before of this fix Redis tried to convert it into an EXPIREAT in the AOF code, regardless of our rewrite of the command. 2011-07-08 12:59:30 +02:00
antirez
812ecc8b10 don't process EXPIRE with negative TTL or EXPIREAT with time in the past if we are a slave too (see http://groups.google.com/group/redis-db/browse_thread/thread/5a931fefb88b16d5). Also propagate it as DEL. 2011-07-07 16:24:37 +02:00
Hampus Wessman
040b0ade7d Don't expire keys while loading AOF.
They will be expired (and a DEL will be logged) after the loading is done
instead.
2011-07-07 16:08:30 +02:00
antirez
cabe03eb75 more valgrind friendly test 2011-07-06 15:22:00 +02:00
antirez
5a9dd97c7c childrens -> children in INFO output field names. This is a backward incompatible change, but really a minimal one. 2011-07-02 10:52:28 +02:00
antirez
6504634019 no more allocation stats info in INFO, useless now that we have jemalloc. 2011-07-02 10:31:16 +02:00
antirez
2cb6828480 Added an unique ID field to every slow log entry. 2011-06-30 17:36:15 +02:00
antirez
de32c37c06 More redis.conf self-documentation. Now even queries that took exactly server.slow_log_slower_than are logged, as this is not exact but is more intuitive for people, and a value of 0 will force every query to be logged. 2011-06-30 15:54:05 +02:00
antirez
35a6044140 slow log configuration implemented 2011-06-30 15:47:15 +02:00
antirez
404345d8e5 DEUBG SLEEP implemented 2011-06-30 13:31:44 +02:00
antirez
daa70b1798 First implementation of the slow log feature 2011-06-30 13:27:32 +02:00
antirez
ef67a2fc3c Partial fix for a problem with AOF and BRPOP. We have at least a single evidence of an AOF that ended with a BRPOP call against an empty list, causing later issues at run time. Now the problem is detected while loading the AOF at startup, even if it is still to understand how the corrupted AOF was generated. 2011-06-29 16:11:23 +02:00
antirez
994ed2bc55 unstable merge conflicts resolved 2011-06-25 12:29:24 +02:00
antirez
d5b36c5114 Merge remote branch 'origin/unstable' into unstable 2011-06-25 12:22:59 +02:00
antirez
c9d0c3623a diskstore removed 2011-06-25 12:22:03 +02:00
Salvatore Sanfilippo
a004de0f15 Merge pull request #63 from djanowski/tcl
Add warning when `tcl` is not available to run tests
2011-06-24 09:59:37 -07:00
Damian Janowski
b3bc4452d2 Avoid bug reports when Tcl is not installed. 2011-06-24 13:56:06 -03:00
antirez
c1c9d551da Fix for bug 561 and other related problems 2011-06-20 17:19:36 +02:00
antirez
634bae94fb useless call removed, thanks to Pieter for spotting this 2011-06-20 16:42:37 +02:00
antirez
f85cd526c1 DB API refactoring. The changes were designed together with Pieter Noordhuis. 2011-06-20 16:42:16 +02:00
antirez
3e2a0bf44a Makefile deps updated 2011-06-20 11:58:54 +02:00
antirez
e93d36a638 It is now possible to build with: make 32bit USE_JEMALLOC=yes 2011-06-20 11:54:57 +02:00
antirez
7d9ba15669 Added -ldl when linking against jemalloc, needed on Linux 2011-06-20 11:54:35 +02:00
antirez
fec5a664f8 Fixed INFO implementation to use the new allocator name define 2011-06-20 11:54:08 +02:00
antirez
9e62dc17da Makefile modified to build with jemalloc 2011-06-20 11:52:15 +02:00
antirez
16cd4acdee ZMALLOC related stuff removed from config.h. They are now defined in zmalloc.h 2011-06-20 11:35:29 +02:00
antirez
29d04257b0 forward-ported changes in zmalloc.c/h to support jemalloc build 2011-06-20 11:34:04 +02:00
antirez
07486df6fe new INFO filed master_link_down_since_seconds 2011-06-17 16:16:46 +02:00
antirez
591f29e0f5 Use a safe iterator while saving the DB, since the getExpire() function will access the iterating dictionary. 2011-06-17 15:41:22 +02:00
antirez
0d1650f8a9 Updated to unstable 2011-06-14 18:06:39 +02:00
Hampus Wessman
0b17517c7c Fix automatic rewrite starting too early.
Slight adjustment in growth calculation.
2011-06-12 07:27:01 +02:00
antirez
9e40bce3fa different message on BGREWRITEAOF when it is just scheduled and not started. 2011-06-10 18:35:16 +02:00