7001 Commits

Author SHA1 Message Date
Oran Agra
cfa076f2ee add active defrag support for streams 2018-06-27 15:00:41 +03:00
Oran Agra
c4f4a2c3ef add defrag hint support into jemalloc 5 2018-06-27 10:52:39 +03:00
Salvatore Sanfilippo
22b87358a2 Merge pull request #5027 from tigertv/unstable
Update sort.c
2018-06-26 16:13:20 +02:00
antirez
7f1573dacd Merge branch 'unstable' of github.com:/antirez/redis into unstable 2018-06-26 16:09:09 +02:00
antirez
30b75cef3b Sentinel: test command renaming feature. 2018-06-26 16:08:43 +02:00
Salvatore Sanfilippo
9b071acc7c Merge pull request #5059 from guybe7/fix_restore_warning
Fix compiler warning in restoreCommand
2018-06-26 14:41:48 +02:00
antirez
9b15b5cde3 Fix type of argslen in sendSynchronousCommand().
Related to #5037.
2018-06-26 14:38:35 +02:00
antirez
2a24e4dbeb Remove black space. 2018-06-26 14:37:22 +02:00
Salvatore Sanfilippo
b5cd7336d9 Merge pull request #5037 from madolson/repl-auth-fix
Fixed replication authentication with whitespace password
2018-06-26 14:33:20 +02:00
antirez
db2671e28b Sentinel: fix SENTINEL SET error reporting.
Thanks to @shenlongxing for reporting the problem.
Related to #5062.
2018-06-26 09:17:38 +02:00
Madelyn Olson
0fe8d9889b Addressed comments 2018-06-26 00:57:35 +00:00
Madelyn Olson
d0c04bd6f5 Fixed replication authentication with whitespace in password 2018-06-26 00:48:37 +00:00
antirez
95612d5db3 Sentinel: drop the renamed-command entry in a more natural way.
Instead of telling the user to set the renamed command to "" to remove
the renaming, to the obvious thing when a command is renamed to itself.

So if I want to remove the renaming of PING, I just rename it to PING
again.
2018-06-25 17:50:46 +02:00
antirez
8b169ba4b7 Sentinel command renaming: document it into sentinel.conf. 2018-06-25 17:45:01 +02:00
antirez
9604d86756 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2018-06-25 17:34:12 +02:00
antirez
7c1c878e2c Sentinel command renaming: use case sensitive hashing for the dict. 2018-06-25 17:31:57 +02:00
antirez
80ec775b61 Sentinel command renaming: fix CONFIG SET event logging. 2018-06-25 17:24:04 +02:00
antirez
97f75f1589 Sentinel command renaming: fix CONFIG SET after refactoring. 2018-06-25 17:23:32 +02:00
antirez
5ae54e42b6 Sentinel command renaming: implement SENTINEL SET. 2018-06-25 17:13:20 +02:00
antirez
bb4770af4b Sentinel: make SENTINEL SET able to handle different arities. 2018-06-25 17:12:39 +02:00
antirez
38e42968fa Sentinel command renaming: config rewriting. 2018-06-25 16:55:01 +02:00
antirez
6aad61d9ed Sentinel command renaming: rename-command option parsing. 2018-06-25 16:47:50 +02:00
antirez
52e72ee34b Sentinel command renaming: base machanism implemented. 2018-06-25 14:06:05 +02:00
Guy Benoish
0c92e3ec86 Fix compiler warning in restoreCommand 2018-06-24 16:53:01 +07:00
Salvatore Sanfilippo
fc52e9216e Merge pull request #4634 from soloestoy/special-auth
config: handle special configuration "" for auth
2018-06-22 15:48:33 +02:00
Salvatore Sanfilippo
578583e31b Merge pull request #5049 from youjiali1995/fix-load-rdb
Fix rdbLoadIntegerObject() to create shared objects when needed.
2018-06-22 15:47:45 +02:00
Salvatore Sanfilippo
37c457c0c7 Merge pull request #5053 from michael-grunder/zpopminmax-keypos
Update ZPOPMIN/ZPOPMAX command declaration
2018-06-22 15:35:36 +02:00
Salvatore Sanfilippo
f56006254e Merge pull request #5050 from shenlongxing/fix-typo
fix typo
2018-06-22 15:34:36 +02:00
michael-grunder
773c63eb49 Update ZPOPMIN/ZPOPMAX command declaration
Unlike the BZPOP variants, these functions take a single key.  This fixes
an erroneous CROSSSLOT error when passing a count to a cluster enabled
server.
2018-06-21 12:30:42 -07:00
Salvatore Sanfilippo
c5f3e70cc3 Merge pull request #5051 from oranagra/streams_mem_estimate
fix streams memory estimation, missing raxSeek
2018-06-21 17:36:28 +02:00
Oran Agra
d6fe68eaea fix streams memory estimation, missing raxSeek 2018-06-21 17:58:29 +03:00
shenlongxing
bdb2664a81 fix typo 2018-06-21 22:08:09 +08:00
youjiali1995
12cd55a62e Fix rdbLoadIntegerObject() to create shared objects when needed. 2018-06-21 19:23:16 +08:00
Salvatore Sanfilippo
71b8520be6 Merge pull request #5036 from bepahol/unstable
Update README.md
2018-06-20 17:42:37 +02:00
Salvatore Sanfilippo
f0d8e44f7c Merge pull request #5039 from oranagra/rdb_dbsize_hint
64 bit RDB_OPCODE_RESIZEDB in rdb saving
2018-06-20 11:18:31 +02:00
Salvatore Sanfilippo
35a6b461d7 Merge pull request #5040 from oranagra/memrev64ifbe_fix
use safe macro (non empty) in memrev64ifbe to eliminate empty if warning
2018-06-20 11:17:06 +02:00
Salvatore Sanfilippo
3e5624ac6b Merge pull request #5045 from guybe7/restore_fix
Enhance RESTORE with RDBv9 new features
2018-06-20 11:11:39 +02:00
Guy Benoish
56163a78a4 Enhance RESTORE with RDBv9 new features
RESTORE now supports:
1. Setting LRU/LFU
2. Absolute-time TTL

Other related changes:
1. RDB loading will not override LRU bits when RDB file
   does not contain the LRU opcode.
2. RDB loading will not set LRU/LFU bits if the server's
   maxmemory-policy does not match.
2018-06-20 15:11:08 +07:00
Salvatore Sanfilippo
7eac86ef6d Merge pull request #5042 from oranagra/malloc_usable_size_libc
add malloc_usable_size for libc malloc
2018-06-19 17:22:36 +02:00
Oran Agra
505956c6f9 add malloc_usable_size for libc malloc
this reduces the extra 8 bytes we save before each pointer.
but more importantly maybe, it makes the valgrind runs to be more similiar
to our normal runs.

note: the change in malloc_stats struct in server.h is to eliminate an name conflict.
structs that are not typedefed are resolved from a separate name space.
2018-06-19 18:18:23 +03:00
Salvatore Sanfilippo
65a79bc548 Merge pull request #5023 from FX-HAO/unstable
Fix update_zmalloc_stat_alloc in zrealloc
2018-06-19 16:50:22 +02:00
antirez
ab27d9b08f Test RDB stream encoding saving/loading. 2018-06-19 16:29:15 +02:00
Salvatore Sanfilippo
3d34368dbe Merge pull request #5041 from oranagra/redis-rdb-check_rdbLoadMillisecondTime
fix redis-rdb-check to provide proper arguments to rdbLoadMillisecondTime
2018-06-19 16:06:11 +02:00
antirez
88c5e317c6 Modules: convert hash to hash table for big objects. 2018-06-19 16:03:00 +02:00
Oran Agra
56cbc978fc fix redis-rdb-check to provide proper arguments to rdbLoadMillisecondTime
due to incorrect forward declaration, it didn't provide all arguments.
this lead to random value being read from the stack and return of incorrect time,
which in this case doesn't matter since no one uses it.
2018-06-19 16:54:22 +03:00
antirez
7d0b46ec00 AOF: remove no longer used variable "now". 2018-06-19 15:54:05 +02:00
antirez
b935ba95eb Modify clusterRedirectClient() to handle ZPOP and XREAD. 2018-06-19 15:53:32 +02:00
Oran Agra
d575eae926 use safe macro (non empty) in memrev64ifbe to eliminate empty if warning 2018-06-19 16:46:41 +03:00
Oran Agra
5dc8ef5b47 64 bit RDB_OPCODE_RESIZEDB in rdb saving
this complication in the code is from times were rdbSaveLen didn't support 64 bits.
2018-06-19 16:43:12 +03:00
antirez
bd094a4d5b Remove AOF optimization to skip expired keys.
Basically we cannot be sure that if the key is expired while writing the
AOF, the main thread will surely find the key expired. There are
possible race conditions like the moment at which the "now" is sampled,
and the fact that time may jump backward.

Think about the following:

SET a 5
EXPIRE a 1

AOF rewrite starts after about 1 second. The child process finds the key
expired, while in the main thread instead an INCR command is called
against the key "a" immediately after a fork, and the scheduler was
faster to give execution time to the main thread, so "a" is yet not
expired.

The main thread will generate an INCR a command to the AOF log that will
be appended to the rewritten AOF file, but that INCR command will target
a non existin "a" key, so a new non volatile key "a" will be created.

Two observations:

A) In theory by computing "now" before the fork, we should be sure that
if a key is expired at that time, it will be expired later when the
main thread will try to access to such key. However this does not take
into account the fact that the computer time may jump backward.

B) Technically we may still make the process safe by using a monotonic
time source.

However there were other similar related bugs, and in general the new
"vision" is that Redis persistence files should represent the memory
state without trying to be too smart: this makes the design more
consistent, bugs less likely to arise from complex interactions, and in
the end what is to fix is the Redis expire process to have less expired
keys in RAM.

Thanks to Oran Agra and Guy Benoish for writing me an email outlining
this problem, after they conducted a Redis 5 code review.
2018-06-19 15:43:06 +02:00