mirror of
https://github.com/fluencelabs/redis
synced 2025-03-17 08:00:49 +00:00
Bug #169 fixed (BLOP/BRPOP interrupted connections are not cleared from the queue)
This commit is contained in:
parent
9ebed7cf06
commit
5921aa36ed
21
Changelog
21
Changelog
@ -1,3 +1,24 @@
|
||||
2010-02-22 Fixed 32bit make target to work on Linux out of the box
|
||||
2010-02-19 A problem with replication with multiple slaves connectiong to a single master fixed. It was due to a typo, and reported on github by the user micmac. Also the copyright year fixed from many files.
|
||||
2010-02-10 Saner VM defaults for redis.conf
|
||||
2010-02-09 VM now is able to block clients on swapped keys for all the commands
|
||||
2010-02-07 ZCOUNT and ZRANGEBYSCORE new tests
|
||||
2010-02-07 ZRANGEBYSCORE now supports open intervals, prefixing double values with a open paren. Added ZCOUNT that can count the elements inside an interval of scores, this supports open intervals too
|
||||
2010-02-07 WITHSCORES in ZRANGEBYSCORE thanks to Sam Hendley
|
||||
2010-02-06 Added "withscores" option to zrangebyscore command. Based on withscores support in zrange function, ugliest part was the argument parsing to handle using it with the limit option.
|
||||
2010-02-06 DEBUG OBJECT provide info about serialized object length even when VM is disabled
|
||||
2010-02-06 multi bulk requests in redis-benchmark, default fsync policy changed to everysec, added a prefix character for DEBUG logs
|
||||
2010-02-04 APPEND tests
|
||||
2010-02-04 APPEND command
|
||||
2010-02-02 Faster version of the function hashing possibly encoded objects, leading to a general speed gain when working with Sets of integers
|
||||
2010-02-02 faster Set loading time from .rdb file resizing the hash table to the right size before loading elements
|
||||
2010-02-02 Log time taken to load the DB at startup, in seconds
|
||||
2010-01-31 Fixed VM corruption due to child fclosing the VM file directly or indirectly calling exit(), now replaced with _exit() in all the sensible places. Masked a few signals from IO threads.
|
||||
2010-01-28 loading side of the threaded VM
|
||||
2010-01-26 TODO cahnges
|
||||
2010-01-23 Fixed memory human style memory reporting, removed server.usedmemory, now zmalloc_used_memory() is used always.
|
||||
2010-01-22 VM tuning thanks to redis-stat vmstat. Now it performs much better under high load
|
||||
2010-01-21 Changelog updated
|
||||
2010-01-21 REDIS_MAX_COMPLETED_JOBS_PROCESSED is now in percentage, not number of jobs. Moved a debugging message a few lines forward as it was called where a few logged parameters where invalid, leading to a crash
|
||||
2010-01-20 fixed a deadlock caused by too much finished processes in queue so that I/O clients writing to the wirte side of the pipe used to awake the main thread where blocking. Then a BGSAVE started waiting for the last active thread to finish, condition impossible because all the I/O threads where blocking on threads. Takes this as a note to myself...
|
||||
2010-01-20 ae.c event loop does no longer support exception notifications, as they are fully pointless. Also a theoretical bug that never happens in practice fixed.
|
||||
|
1
TODO
1
TODO
@ -62,6 +62,7 @@ SMALL ONES:
|
||||
* MSADD (n keys) (n values). See this thread in the Redis google group: http://groups.google.com/group/redis-db/browse_thread/thread/e766d84eb375cd41
|
||||
* Don't save empty lists / sets / zsets on disk with snapshotting.
|
||||
* Remove keys when a list / set / zset reaches length of 0.
|
||||
* An option to exec a command slave-side if the master connection is lost: even cooler: if the script returns "0" the slave elects itself as master, otherwise continue trying to reconnect.
|
||||
|
||||
THE "MAYBE" TODO LIST: things that may or may not get implemented
|
||||
=================================================================
|
||||
|
13
redis.c
13
redis.c
@ -2334,7 +2334,8 @@ static void readQueryFromClient(aeEventLoop *el, int fd, void *privdata, int mas
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
processInputBuffer(c);
|
||||
if (!(c->flags & REDIS_BLOCKED))
|
||||
processInputBuffer(c);
|
||||
}
|
||||
|
||||
static int selectDb(redisClient *c, int id) {
|
||||
@ -6138,7 +6139,6 @@ static void blockForKeys(redisClient *c, robj **keys, int numkeys, time_t timeou
|
||||
}
|
||||
/* Mark the client as a blocked client */
|
||||
c->flags |= REDIS_BLOCKED;
|
||||
aeDeleteFileEvent(server.el,c->fd,AE_READABLE);
|
||||
server.blpop_blocked_clients++;
|
||||
}
|
||||
|
||||
@ -6166,14 +6166,7 @@ static void unblockClientWaitingData(redisClient *c) {
|
||||
c->blockingkeys = NULL;
|
||||
c->flags &= (~REDIS_BLOCKED);
|
||||
server.blpop_blocked_clients--;
|
||||
/* Ok now we are ready to get read events from socket, note that we
|
||||
* can't trap errors here as it's possible that unblockClientWaitingDatas() is
|
||||
* called from freeClient() itself, and the only thing we can do
|
||||
* if we failed to register the READABLE event is to kill the client.
|
||||
* Still the following function should never fail in the real world as
|
||||
* we are sure the file descriptor is sane, and we exit on out of mem. */
|
||||
aeCreateFileEvent(server.el, c->fd, AE_READABLE, readQueryFromClient, c);
|
||||
/* As a final step we want to process data if there is some command waiting
|
||||
/* We want to process data if there is some command waiting
|
||||
* in the input buffer. Note that this is safe even if
|
||||
* unblockClientWaitingData() gets called from freeClient() because
|
||||
* freeClient() will be smart enough to call this function
|
||||
|
@ -197,6 +197,10 @@ vm-enabled no
|
||||
#
|
||||
# Useless to say, the best kind of disk for a Redis swap file (that's accessed
|
||||
# at random) is a Solid State Disk (SSD).
|
||||
#
|
||||
# *** WARNING *** if you are using a shared hosting the default of putting
|
||||
# the swap file under /tmp is not secure. Create a dir with access granted
|
||||
# only to Redis user and configure Redis to create the swap file there.
|
||||
vm-swap-file /tmp/redis-%p.vm
|
||||
|
||||
# vm-max-memory configures the VM to use at max the specified amount of
|
||||
|
Loading…
x
Reference in New Issue
Block a user