Commit Graph

1232 Commits

Author SHA1 Message Date
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