summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Redis 2.4.182.4.182.4antirez2012-11-282-1/+8
|
* Jemalloc updated to version 3.2.0.antirez2012-11-2840-631/+1741
|
* Make sure that SELECT argument is an integer or return an error.antirez2012-09-111-1/+5
| | | | | | | | | | | | | | Unfortunately we had still the lame atoi() without any error checking in place, so "SELECT foo" would work as "SELECT 0". This was not an huge problem per se but some people expected that DB can be strings and not just numbers, and without errors you get the feeling that they can be numbers, but not the behavior. Now getLongFromObjectOrReply() is used as almost everybody else across the code, generating an error if the number is not an integer or overflows the long type. Thanks to @mipearson for reporting that on Twitter.
* Redis 2.4.172.4.17antirez2012-08-302-1/+12
|
* Sentinel: added documentation about slave-priority in redis.confantirez2012-08-301-0/+15
|
* Sentinel: Redis-side support for slave priority.antirez2012-08-303-0/+16
| | | | | | | | | | | | | A Redis slave can now be configured with a priority, that is an integer number that is shown in INFO output and can be get and set using the redis.conf file or the CONFIG GET/SET command. This field is used by Sentinel during slave election. A slave with lower priority is preferred. A slave with priority zero is never elected (and is considered to be impossible to elect even if it is the only slave available). A next commit will add support in the Sentinel side as well.
* run_id added to INFO output (backported from 2.6).antirez2012-08-304-0/+55
| | | | | | | | | | | | This change is required to make Redis 2.4 compatible with Sentinel. 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.
* Use correct variable name for value to convert.Michael Parker2012-08-221-1/+2
| | | | | | | | | Note by @antirez: this code was never compiled because utils.c lacked the float.h include, so we never noticed this variable was mispelled in the past. This should provide a noticeable speed boost when saving certain types of databases with many sorted sets inside.
* Set p to its new offset before modifying itPieter Noordhuis2012-08-221-6/+7
|
* Redis 2.4.162.4.16antirez2012-08-012-1/+9
|
* mark fd as writable when EPOLLERR or EPOLLHUP is returned by epoll_wait.jokea2012-07-091-0/+2
|
* Typo in comment.antirez2012-07-091-1/+1
|
* REPLCONF internal command introduced.antirez2012-07-094-18/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The REPLCONF command is an internal command (not designed to be directly used by normal clients) that allows a slave to set some replication related state in the master before issuing SYNC to start the replication. The initial motivation for this command, and the only reason currently it is used by the implementation, is to let the slave instance communicate its listening port to the slave, so that the master can show all the slaves with their listening ports in the "replication" section of the INFO output. This allows clients to auto discover and query all the slaves attached into a master. Currently only a single option of the REPLCONF command is supported, and it is called "listening-port", so the slave now starts the replication process with something like the following chat: REPLCONF listening-prot 6380 SYNC Note that this works even if the master is an older version of Redis and does not understand REPLCONF, because the slave ignores the REPLCONF error. In the future REPLCONF can be used for partial replication and other replication related features where there is the need to exchange information between master and slave. NOTE: This commit also fixes a bug: the INFO outout already carried information about slaves, but the port was broken, and was obtained with getpeername(2), so it was actually just the ephemeral port used by the slave to connect to the master as a client.
* Redis 2.4.152.4.15antirez2012-06-212-5/+13
|
* Added time.h include in redis-cli.antirez2012-06-021-0/+1
| | | | | | | redis-cli.c uses the time() function to seed the PRNG, but time.h was not included. This was not noticed since sys/time.h is included and was enough in most systems (but not correct). With Ubuntu 12.04 GCC generates a warning that made us aware of the issue.
* future-proof version comparisonPremysl Hruby2012-06-021-2/+2
|
* Deleted jemalloc.orig from /deps.antirez2012-06-0280-30365/+0
| | | | | | In the commit upgrading jemalloc to version 3.0.0 I added the old version of Jemalloc in the 'jemalloc.orig' directory for an error. This commit removes the not useful version of jemalloc.
* Jemalloc updated to 3.0.0.antirez2012-06-02157-9019/+42840
| | | | | | | | | | | | Full changelog here: http://www.canonware.com/cgi-bin/gitweb.cgi?p=jemalloc.git;a=blob_plain;f=ChangeLog;hb=master Notable improvements from the point of view of Redis: 1) Bugfixing. 2) Support for Valgrind. 3) Support for OSX Lion, FreeBSD.
* Fixed typo in the 2.4.14 release note.antirez2012-05-231-1/+1
|
* Redis 2.4.142.4.14antirez2012-05-232-1/+16
|
* Set fd to writable when poll(2) detects POLLERR or POLLHUP event.jokea2012-05-231-0/+2
|
* Fixed a typo in install_server.shThePicard2012-05-231-1/+1
|
* No longer used TODO file removed.antirez2012-05-231-4/+0
|
* Fixed issue #516 (ZINTERSTORE mixing sets and zsets).antirez2012-05-232-1/+10
| | | | | | | | | | | | Weeks ago trying to fix an harmless GCC warning I introduced a bug in the ziplist-encoded implementations of sorted sets. The bug completely broke zuiNext() iterator, that is used in the ZINTERSTORE and ZUNIONSTORE implementation, so those two commands are no longer reliable starting from Redis version 2.4.12 and latest 2.6.0-RC releases. This commit fixes the problem and adds a regression test.
* Add an implementation of mstime() to 2.4.antirez2012-05-122-0/+6
| | | | | | Commit 9419eb0 back ported a better expired keys collection algorithm that is more incremental but for it to compile and work we need an implementation of the mstime() function that was missing in 2.4.
* redis-cli pipe mode: handle EINTR properly as well so that SIGSTOP/SIGCONT ↵antirez2012-05-121-2/+2
| | | | are handled correctly.
* redis-cli pipe mode: handle EAGAIN while writing to socket.antirez2012-05-121-3/+7
|
* redis-cli --pipe for mass import.antirez2012-05-122-3/+143
|
* If the computer running the Redis test is slow, we revert to --clients 1 to ↵antirez2012-05-121-0/+17
| | | | avoid false positives.
* Comment improved so that the code goal is more clear. Thx to @agladysh.antirez2012-05-121-1/+1
|
* More incremental active expired keys collection process.antirez2012-05-122-1/+9
| | | | | | | | | | | | If a large amonut of keys are all expiring about at the same time, the "active" expired keys collection cycle used to block as far as the percentage of already expired keys was >= 25% of the total population of keys with an expire set. This could block the server even for many seconds in order to reclaim memory ASAP. The new algorithm uses at max a small amount of milliseconds per cycle, even if this means reclaiming the memory less promptly it also means a more responsive server.
* memtest.c: integer overflow fixed.antirez2012-05-111-1/+1
|
* Macros ULONG_ONEZERO / ULONG_ZEROONE were inverted in #ifdef to test 32/64 ↵antirez2012-05-111-3/+3
| | | | bit arch.
* Fix PREFIX typo in Makefile.antirez2012-05-091-1/+1
|
* Allow PREFIX to be overrided in Makefile.antirez2012-05-091-1/+1
|
* Redis 2.4.132.4.13antirez2012-05-022-1/+10
|
* Use safe dictionary iterator from KEYSPieter Noordhuis2012-05-011-1/+1
| | | | | | | | | Every matched key in a KEYS call is checked for expiration. When the key is set to expire, the call to `getExpire` will assert that the key also exists in the main dictionary. This in turn causes a rehashing step to be executed. Rehashing a dictionary when there is an iterator active may result in the iterator emitting duplicate entries, or not emitting some entries at all. By using a safe iterator, the rehash step is omitted.
* Redis 2.4.122.4.12antirez2012-04-302-1/+10
|
* Properly wait the slave to sync with master in BRPOPLPUSH test.antirez2012-04-301-3/+7
|
* A more lightweight implementation of issue 141 regression test.antirez2012-04-301-13/+26
|
* Redis test: More reliable BRPOPLPUSH replication test.antirez2012-04-301-2/+5
| | | | | | Now it uses the new wait_for_condition testing primitive. Also wait_for_condition implementation was fixed in this commit to properly escape the expr command and its argument.
* Testing framework fixes and improvements backported from 2.6.antirez2012-04-304-16/+52
|
* A few compiler warnings suppressed.antirez2012-04-292-3/+5
|
* memtest.c fixed to actually use v1 and v2 in memtest_fill_value().antirez2012-04-291-6/+6
|
* Limit memory used by big SLOWLOG entries.antirez2012-04-215-8/+51
| | | | | | | | | | | Two limits are added: 1) Up to SLOWLOG_ENTRY_MAX_ARGV arguments are logged. 2) Up to SLOWLOG_ENTRY_MAX_STRING bytes per argument are logged. 3) slowlog-max-len is set to 128 by default (was 1024). The number of remaining arguments / bytes is logged in the entry so that the user can understand better the nature of the logged command.
* Redis 2.4.112.4.11antirez2012-04-192-1/+14
|
* New redis-cli backported from unstable.antirez2012-04-181-29/+224
|
* Marginally cleaner lookupKeyByPattern() implementation.antirez2012-04-181-3/+3
| | | | | | just fieldobj itself as sentinel of the fact a field object is used or not, instead of using the filed length, that may be confusing both for people and for the compiler emitting a warning.
* lookupKeyByPattern() used by SORT GET/BY rewritten. Fixes issue #460.antirez2012-04-171-32/+42
| | | | | | | | | | | | | | | lookupKeyByPattern() was implemented with a trick to speedup the lookup process allocating two fake Redis obejcts on the stack. However now that we propagate expires to the slave as DEL operations the lookup of the key may result into a call to expireIfNeeded() having the stack allocated object as argument, that may in turn use it to create the protocol to send to the slave. But since this fake obejcts are inherently read-only this is a problem. As a side effect of this fix there are no longer size limits in the pattern to be used with GET/BY option of SORT. See https://github.com/antirez/redis/issues/460 for bug details.
* implement aeWait using poll(2). Fixes issue #267.jokea2012-04-061-13/+11
|