antirez
bad7813b70
c->bufpos initialization moved for aesthetics.
2012-03-13 12:59:27 +01:00
antirez
fcc81cb320
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
a82c3fcaf3
Return ASAP from checkClientOutputBufferLimits() if c->reply_bytes is zero.
2012-02-16 12:20:56 +01:00
antirez
97f45bad9b
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
f57707f408
Precision of getClientOutputBufferMemoryUsage() greatily improved, see issue #327 for more information.
2012-02-07 13:05:36 +01:00
antirez
0de0faf4a0
freeMemoryIfNeeded() minor refactoring
2012-02-06 16:56:42 +01:00
antirez
ee273aa92c
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
ea71e06988
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
f70afca5e5
Fixed typo in getClientLimitClassByName()
2012-01-25 18:07:56 +01:00
antirez
dd46b715a9
lenght -> length
2012-01-24 15:33:15 +01:00
antirez
069139ce75
after all closing a client for output buffer limit overcoming is a WARNING level message.
2012-01-24 12:03:48 +01:00
antirez
9844d172b9
Client output buffer limits: configuration of parameters for the different classes of clients implemented.
2012-01-24 10:43:30 +01:00
antirez
65654feac2
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
ddec8a8903
client buffer handling refactoring and optimization
2012-01-23 17:15:49 +01:00
antirez
1caa425a7c
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
edfaedafb0
Introduced three client limit classes: normal, slave, pubsub
2012-01-17 12:43:01 +01:00
antirez
b7a33b7322
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
a9ea3f0700
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
2d4305c5b8
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
ac6de3d151
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
64afc922e6
server.replstate -> server.repl_state
2011-12-21 12:23:18 +01:00
antirez
c466e56e91
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
09f5c58216
show initial querybuf bytes on querybuf overflow.
2011-11-28 11:12:55 +01:00
antirez
ce13e0d064
log client protocol errors for log level >= verbose
2011-11-25 16:09:34 +01:00
antirez
aac9f95be1
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
9dbcab8b08
last executed command in CLIENT LIST output.
2011-11-24 14:56:34 +01:00
antirez
785a743b78
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
22d6f6579b
Fixed bug in getClientInfoString() that was not rendering the N (no flags) special flag correctly.
2011-11-21 16:19:30 +01:00
antirez
8dd9319cb2
Close client connection and log the event when the client input buffer reaches 1GB.
2011-11-21 16:17:51 +01:00
antirez
3f428bb5c2
show active events in client file descriptor in CLIENT LIST.
2011-11-21 16:06:03 +01:00
antirez
52c3150e1e
added output list and buffer length, query buffer size, to CLIENT LIST output.
2011-11-21 15:54:49 +01:00
antirez
48f70ac1b7
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
006d721473
useless double if removed.
2011-11-08 11:26:06 +01:00
antirez
2ce2bb347a
yet another #if REDIS_MBULK_BIG_ARG removed.
2011-11-08 11:24:12 +01:00
antirez
bbc8260844
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
8da0b6d7b8
A comment moved a few lines for clarity.
2011-11-04 11:18:15 +01:00
antirez
7c615d3a26
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
661dfc7ba6
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
7cef7b3847
optimized object creation in multi-bulk protocol parsing
2011-11-02 17:30:19 +01:00
antirez
8b02578017
sdsIncrLen() / sdsMakeRoomFor() used to avoid copying to intermediate buffer while reading the client query.
2011-11-02 16:52:45 +01:00
antirez
9ae9fcaefb
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
70a04c93cb
First implementation of the ASKING command. Semantics still to verify.
2011-10-17 17:35:23 +02:00
antirez
357f49db2f
replaced redisAssert() with redisAssertWithInfo() in a shitload of places.
2011-10-04 18:43:03 +02:00
antirez
0d57e6afc1
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
Hampus Wessman
e558915223
Fix crash when pipelining several blocking commands.
2011-07-28 13:50:44 +02:00
antirez
3aa9917e6e
Replicate EVALSHA as EVAL taking a dictionary of sha1 -> script source code.
2011-07-13 15:38:03 +02:00
antirez
335b27ecd0
master branch merged into scripting.
2011-07-12 12:39:16 +02:00
antirez
ee2dc83094
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
4d0e1714f0
unstable merge conflicts resolved
2011-06-25 12:29:24 +02:00
antirez
59f09141f5
diskstore removed
2011-06-25 12:22:03 +02:00