5941 Commits

Author SHA1 Message Date
antirez
033a49e23d MEMORY USAGE: SAMPLES option added + fixes to size computation.
The new SAMPLES option is added, defaulting to 5, and with 0 being a
special value to scan the whole set of elements.

Fixes to the object size computation were made since the original PR
assumed data structures still contaning robj structures, while now after
the lazyfree changes, are all SDS strings.
2016-09-15 15:25:14 +02:00
antirez
a427affe30 INFO: new memory reporting fields added. 2016-09-15 10:33:23 +02:00
antirez
2eeedfe97f C struct memoh renamed redisMemOverhead. API prototypes added. 2016-09-15 09:44:07 +02:00
antirez
8a81227859 MEMORY OVERHEAD refactored into a generic API. 2016-09-15 09:37:55 +02:00
antirez
42acf62e5f dict.c: dictReplaceRaw() -> dictAddOrFind().
What they say about "naming things" in programming?
2016-09-14 16:43:38 +02:00
antirez
28942ddac7 Trim comment to 80 cols. 2016-09-14 16:41:05 +02:00
antirez
e027e9e85d Apply the new dictUnlink() where possible.
Optimizations suggested and originally implemented by @oranagra.
Re-applied by @antirez using the modified API.
2016-09-14 16:37:53 +02:00
oranagra
40cf4d9a0a dict.c: introduce dictUnlink().
Notes by @antirez:

This patch was picked from a larger commit by Oran and adapted to change
the API a bit. The basic idea is to avoid double lookups when there is
to use the value of the deleted entry.

BEFORE:

    entry = dictFind( ... ); /* 1st lookup. */
    /* Do somethjing with the entry. */
    dictDelete(...);         /* 2nd lookup. */

AFTER:

    entry = dictUnlink( ... ); /* 1st lookup. */
    /* Do somethjing with the entry. */
    dictFreeUnlinkedEntry(entry); /* No lookups!. */
2016-09-14 12:18:59 +02:00
antirez
a114054182 MEMORY OVERHEAD implemented (using Oran Agra initial implementation).
This code was extracted from @oranagra PR #3223 and modified in order
to provide only certain amounts of information compared to the original
code. It was also moved from DEBUG to the newly introduced MEMORY
command. Thanks to Oran for the implementation and the PR.

It implements detailed memory usage stats that can be useful in both
provisioning and troubleshooting memory usage in Redis.
2016-09-13 17:39:25 +02:00
antirez
33ed0a71cd objectComputeSize(): estimate collections sampling N elements.
For most tasks, we need the memory estimation to be O(1) by default.
This commit also implements an initial MEMORY command.
Note that objectComputeSize() takes the number of samples to check as
argument, so MEMORY should be able to get the sample size as option
to make precision VS CPU tradeoff tunable.

Related to: PR #3223.
2016-09-13 10:28:23 +02:00
oranagra
d028418790 Adding objectComputeSize() function. 2016-09-12 16:36:59 +02:00
oranagra
1ef16debfb Optimize repeated keyname hashing.
(Change cherry-picked and modified by @antirez from a larger commit
provided by @oranagra in PR #3223).
2016-09-12 13:19:05 +02:00
Salvatore Sanfilippo
53530e09c5 Merge pull request #3492 from wyxustcsa09/fix-memory
fix memory error on module unload
2016-09-09 16:05:06 +02:00
antirez
6a47311dfc Merge branch 'unstable' of github.com:antirez/redis into unstable 2016-09-09 16:01:43 +02:00
antirez
c72557349a Example modules: Add C99 standard to cflags. 2016-09-09 16:01:29 +02:00
antirez
125deba083 Merge branch 'aofrdb' into unstable 2016-09-09 15:03:21 +02:00
antirez
9edd074a1d fix the fix for the TCP binding.
This commit attempts to fix a problem with PR #3467.
2016-09-09 14:59:48 +02:00
oranagra
c7dbd7d6c5 fix tcp binding when IPv6 is unsupported 2016-09-09 14:59:21 +02:00
antirez
fef4253c31 debug.c: no need to define _GNU_SOURCE, is defined in fmacros.h. 2016-09-09 11:15:10 +02:00
antirez
de5ac38179 crash log - improve code dump with more info and called symbols. 2016-09-09 11:00:19 +02:00
wyx
3e4e2fd08a fix memory error on module unload 2016-09-09 10:22:57 +08:00
oranagra
7698b97ca5 crash log - add hex dump of function code 2016-09-08 14:14:57 +02:00
antirez
229466fdf1 dict.c benchmark minor improvements. 2016-09-07 15:28:40 +02:00
antirez
259a909168 dict.c benchmark: mixed del/insert benchmark. 2016-09-07 12:34:53 +02:00
antirez
a65fd55d3f dict.c benchmark: finish rehashing before testing lookups. 2016-09-07 11:06:03 +02:00
antirez
b97146827d dict.c benchmark improvements. 2016-09-07 10:53:47 +02:00
antirez
bd8a490194 dict.c benchmark: take optional count argument. 2016-09-07 10:44:29 +02:00
antirez
ab03414ea5 dict.c benchmark. 2016-09-07 10:33:15 +02:00
antirez
b462b22e59 Fix rdb.c var types when calling rdbLoadLen().
Technically as soon as Redis 64 bit gets proper support for loading
collections and/or DBs with more than 2^32 elements, the 32 bit version
should be modified in order to check if what we read from rdbLoadLen()
overflows. This would only apply to huge RDB files created with a 64 bit
instance and later loaded into a 32 bit instance.
2016-09-01 11:08:44 +02:00
antirez
982a34d067 sds: don't check for impossible string size in 32 bit systems. 2016-09-01 11:04:22 +02:00
antirez
cf5154f72e RDB AOF preamble: test it in the aofrw unit. 2016-08-24 15:39:39 +02:00
antirez
cfe0810936 Document RDB preamble in AOF rewrites in redis.conf. 2016-08-24 15:33:44 +02:00
antirez
02a360eca0 Sentinel example config: warn about protected mode. 2016-08-11 19:53:12 +02:00
antirez
982df150f8 RDB AOF preamble: WIP 4 (Mixed RDB/AOF loading). 2016-08-11 15:42:28 +02:00
antirez
96d57f8d55 RDB AOF preamble: WIP 3 (RDB loading refactoring). 2016-08-11 15:27:29 +02:00
antirez
95ce1aa378 RDB AOF preamble: WIP 2. 2016-08-09 16:41:40 +02:00
antirez
3bf40950e1 RDB AOF preamble: WIP 1. 2016-08-09 11:07:32 +02:00
Salvatore Sanfilippo
9200d87d30 Merge pull request #3340 from rojingeorge/unstable
Display the nodes' proper summary once the cluster is created using redis-trib
2016-08-05 15:10:41 +02:00
Salvatore Sanfilippo
27d1f4ed7c Merge pull request #3429 from guoxiao/warning
Use the standard predefined identifier __func__ (since C99)
2016-08-04 10:25:53 +02:00
Guo Xiao
eb3640db00 Use the standard predefined identifier __func__ (since C99)
Fix warning: ISO C does not support '__FUNCTION__' predefined identifier
[-Wpedantic]
2016-08-04 15:12:12 +08:00
antirez
3ed474aa05 Modules: basic call/reply tests in test module. 2016-08-03 18:10:11 +02:00
antirez
935fb1eae2 Modules: handle NULL replies more gracefully.
After all crashing at every API misuse makes everybody's life more
complex.
2016-08-03 18:09:36 +02:00
antirez
954ac5c756 Security: Cross Protocol Scripting protection.
This is an attempt at mitigating problems due to cross protocol
scripting, an attack targeting services using line oriented protocols
like Redis that can accept HTTP requests as valid protocol, by
discarding the invalid parts and accepting the payloads sent, for
example, via a POST request.

For this to be effective, when we detect POST and Host: and terminate
the connection asynchronously, the networking code was modified in order
to never process further input. It was later verified that in a
pipelined request containing a POST command, the successive commands are
not executed.
2016-08-03 11:12:32 +02:00
antirez
fa5d8e218e Fix comment over 80 cols. 2016-08-03 10:56:26 +02:00
antirez
89e24b8f4a Modules: initial draft for a testing module. 2016-08-03 10:23:03 +02:00
antirez
5a52229249 Modules: StringAppendBuffer() and ability to retain strings.
RedisModule_StringRetain() allows, when automatic memory management is
on, to keep string objects living after the callback returns. Can also
be used in order to use Redis reference counting of objects inside
modules.

The reason why this is useful is that sometimes when implementing new
data types we want to reference RedisModuleString objects inside the
module private data structures, so those string objects must be valid
after the callback returns even if not referenced inside the Redis key
space.
2016-08-02 15:29:04 +02:00
Qu Chen
7d67db4b9f Fix a bug to delay bgsave while AOF rewrite in progress for replication 2016-08-02 10:44:33 +02:00
antirez
964cea9fba Remove extra "-" from ASCII horizontal bar in comment. 2016-08-02 10:32:44 +02:00
antirez
53cc8d7ce6 Update linenoise to fix insecure redis-cli history file creation.
The problem was fixed in antirez/linenoise repository applying a patch
contributed by @lamby. Here the new version is updated in the Redis
source tree.

Close #1418
Close #3322
2016-07-29 11:28:16 +02:00
antirez
2c80701c7d Changelog format modified to be less verbose. 2016-07-28 14:15:31 +02:00