Commit Graph

6723 Commits

Author SHA1 Message Date
Salvatore Sanfilippo
2a3d933cc6
Merge pull request #7135 from valentinogeron/optimize-xreadgroup-noack
XREADGROUP with NOACK should propagate only one XGROUP SETID command
2020-04-23 16:12:08 +02:00
antirez
96ebfc3b36 ACL: re-enable command execution of disabled users.
After all I changed idea again: enabled/disabled should have a more
clear meaning, and it only means: you can't authenticate with such user
with new connections, however old connections continue to work as
expected.
2020-04-23 11:56:39 +02:00
antirez
9ae8254e20 getRandomBytes(): use HMAC-SHA256.
Now that we have an interface to use this API directly, via ACL GENPASS,
we are no longer sure what people could do with it. So why don't make it
a strong primitive exported by Redis in order to create unique IDs and
so forth?

The implementation was tested against the test vectors that can
be found in RFC4231.
2020-04-23 11:23:50 +02:00
antirez
a95a086be7 ACL GENPASS: take number of bits as argument. 2020-04-23 10:53:21 +02:00
antirez
dc1bc0f423 ACL GENPASS: emit 256 bits instead of 128. 2020-04-23 10:39:53 +02:00
antirez
889eaba2b7 ACL: deny commands execution of disabled users. 2020-04-22 17:14:15 +02:00
Valentino Geron
6fd2d7cfee XREADGROUP with NOACK should propagate only one XGROUP SETID command 2020-04-22 17:03:51 +03:00
antirez
c2db3de498 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-04-22 11:51:05 +02:00
antirez
2d1968f841 Tracking: signal key as modified when evicting. 2020-04-22 10:49:17 +02:00
Theo Buehler
04f1a280e0 TLS: Fix build with SSL_OP_NO_CLIENT_RENEGOTIATION
There is no ssl in this scope, so the build breaks.
All the other options are set directly on the ctx.
2020-04-22 10:05:47 +02:00
antirez
c6ccc2f690 Tracking: NOLOOP further implementation and fixes. 2020-04-21 17:29:18 +02:00
yanhui13
92974f9a98 optimize the output of cluster slots 2020-04-21 16:55:05 +08:00
antirez
94f2e7f9f9 Tracking: NOLOOP internals implementation. 2020-04-21 10:51:46 +02:00
Dave-in-lafayette
80b6f9b0cb
fix for crash during panic before all threads are up
If there's a panic before all threads have been started (say, if file descriptor 0 is closed at exec), the panic response will crash here again.
2020-04-20 16:38:06 -07:00
Dave-in-lafayette
071197fb64
fix for unintended crash during panic response
If redis crashes early, before lua is set up (like, if File Descriptor 0 is closed before exec), it will crash again trying to print memory statistics.
2020-04-20 16:34:36 -07:00
Salvatore Sanfilippo
c49fb47fbe
Merge pull request #7118 from yossigo/fix/openssl-build-issue
TLS: Fix build on older verisons of OpenSSL.
2020-04-20 14:53:33 +02:00
Yossi Gottlieb
c8a720d17d TLS: Fix build on older verisons of OpenSSL. 2020-04-20 13:34:37 +03:00
antirez
c7db333abb Implement redis_set_thread_title for MacOS.
Strange enough, pthread_setname_np() produces a warning for not defined
function even if pthread is included. Moreover the MacOS documentation
claims the return value for the function is void, but actually is int.

Related to #7089.
2020-04-20 12:18:37 +02:00
Salvatore Sanfilippo
85d1d1f870
Merge pull request #7089 from bytedance/set-thread-name
Threaded IO: set thread name for redis-server
2020-04-20 11:54:25 +02:00
antirez
2321939218 Sentinel: small refactoring of sentinelCollectTerminatedScripts().
Related to #7113.
2020-04-20 11:52:34 +02:00
Salvatore Sanfilippo
f9d624c504
Merge pull request #7113 from OMG-By/unstable
fix(sentinel): sentinel.running_scripts not reset
2020-04-20 11:51:51 +02:00
zhenwei pi
5010da6ab0 Threaded IO: set thread name for redis-server
Set thread name for each thread of redis-server, this helps us to
monitor the utilization and optimise the performance.

And suggested-by Salvatore, implement this feature for multi
platforms. Currently support linux and bsd, ignore other OS.

An exmaple on Linux:
 # top -d 5 -p `pidof redis-server ` -H

    PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
3682671 root      20   0  227744   8248   3836 R 99.2  0.0   0:19.53 redis-server
3682677 root      20   0  227744   8248   3836 S 26.4  0.0   0:04.15 io_thd_3
3682675 root      20   0  227744   8248   3836 S 23.6  0.0   0:03.98 io_thd_1
3682676 root      20   0  227744   8248   3836 S 23.6  0.0   0:03.97 io_thd_2
3682672 root      20   0  227744   8248   3836 S  0.2  0.0   0:00.02 bio_close_file
3682673 root      20   0  227744   8248   3836 S  0.2  0.0   0:00.02 bio_aof_fsync
3682674 root      20   0  227744   8248   3836 S  0.0  0.0   0:00.00 bio_lazy_free
3682678 root      20   0  227744   8248   3836 S  0.0  0.0   0:00.00 jemalloc_bg_thd
3682682 root      20   0  227744   8248   3836 S  0.0  0.0   0:00.00 jemalloc_bg_thd
3682683 root      20   0  227744   8248   3836 S  0.0  0.0   0:00.00 jemalloc_bg_thd
3682684 root      20   0  227744   8248   3836 S  0.0  0.0   0:00.00 jemalloc_bg_thd
3682685 root      20   0  227744   8248   3836 S  0.0  0.0   0:00.00 jemalloc_bg_thd
3682687 root      20   0  227744   8248   3836 S  0.0  0.0   0:00.00 jemalloc_bg_thd

Another exmaple on FreeBSD-12.1:
  PID USERNAME    PRI NICE   SIZE    RES STATE    C   TIME    WCPU COMMAND
 5212 root        100    0    48M  7280K CPU2     2   0:26  99.52% redis-server{redis-server}
 5212 root         38    0    48M  7280K umtxn    4   0:06  26.94% redis-server{io_thd_3}
 5212 root         36    0    48M  7280K umtxn    6   0:06  26.84% redis-server{io_thd_1}
 5212 root         39    0    48M  7280K umtxn    1   0:06  25.30% redis-server{io_thd_2}
 5212 root         20    0    48M  7280K uwait    3   0:00   0.00% redis-server{redis-server}
 5212 root         21    0    48M  7280K uwait    2   0:00   0.00% redis-server{bio_close_file}
 5212 root         21    0    48M  7280K uwait    3   0:00   0.00% redis-server{bio_aof_fsync}
 5212 root         21    0    48M  7280K uwait    0   0:00   0.00% redis-server{bio_lazy_free}

Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
2020-04-18 11:17:21 +08:00
omg-by
9d27e00ddb fix(sentinel): sentinel.running_scripts will always increase more times and not reset
when trigger a always fail scripts, sentinel.running_scripts will increase ten times, however it
only decrease one times onretry the maximum. and it will't reset, when it become
SENTINEL_SCRIPT_MAX_RUNNING, sentinel don't trigger scripts.
2020-04-18 00:49:16 +08:00
antirez
c479eace45 Fix XCLAIM propagation in AOF/replicas for blocking XREADGROUP.
See issue #7105.
2020-04-17 12:38:15 +02:00
antirez
37b135a400 Update SDS to latest version. 2020-04-16 16:08:37 +02:00
antirez
c9388ecc73 RESP3: fix HELLO map len in Sentinel mode.
See #6160.
2020-04-16 11:21:52 +02:00
hwware
12b9fd4f03 Fix not used marco in cluster.c 2020-04-15 22:00:36 -04:00
antirez
503a5a24fb Don't allow empty spaces in ACL usernames.
Fixes issue #6418.
2020-04-15 16:40:25 +02:00
antirez
3519a5a026 Don't allow empty spaces in ACL key patterns.
Fixes issue #6418.
2020-04-15 16:12:07 +02:00
antirez
e8dd99fa53 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-04-15 16:01:56 +02:00
antirez
7f794a122f Fix HELLO reply in Sentinel mode, see #6160. 2020-04-15 15:59:52 +02:00
Salvatore Sanfilippo
dfd3ead90d
Merge pull request #7078 from karelrooted/fix/geo-hash-edge-case
FIX truncate max/min longitude,latitude related geo_point
2020-04-15 10:23:23 +02:00
ShooterIT
9cf500a3f6 Implements sendfile for redis. 2020-04-14 23:56:34 +08:00
Salvatore Sanfilippo
7428f51217
Merge pull request #7085 from guybe7/timeout_err_typo
Typo in getTimeoutFromObjectOrReply's error reply
2020-04-14 11:40:51 +02:00
antirez
552b36e657 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-04-14 11:23:57 +02:00
antirez
086c1db2d9 Fix zsetAdd() top comment spelling. 2020-04-14 11:23:44 +02:00
Salvatore Sanfilippo
33386bed66
Merge pull request #7095 from hwware/typofixacl
fix spelling in acl.c
2020-04-14 11:15:26 +02:00
antirez
5fece85491 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-04-14 10:52:45 +02:00
antirez
49ccd2a8e1 Fix function names in zslDeleteNode() top comment. 2020-04-14 10:52:40 +02:00
hwware
1323afed8b fix spelling in acl.c 2020-04-14 00:16:29 -04:00
Guy Benoish
29760b2eb7 Typo in getTimeoutFromObjectOrReply's error reply 2020-04-11 15:05:01 +03:00
Salvatore Sanfilippo
767977c533
Merge pull request #7074 from hayleeliu/unstable
fix spelling mistake in bitops.c
2020-04-10 10:15:25 +02:00
antirez
839bbcb039 RESP3: change streams items from maps to arrays.
Streams items are similar to dictionaries, however they preserve both
the order, and allow for duplicated field names. So a map is not a
semantically sounding way to deal with this.

https://twitter.com/antirez/status/1248261087553880069
2020-04-10 10:12:26 +02:00
antirez
3072498665 Merge branch 'faster-rdb-loading' into unstable 2020-04-09 19:15:13 +02:00
antirez
6ad44b76b9 Use the special static refcount for stack objects. 2020-04-09 16:25:30 +02:00
antirez
d88f52ee7d RDB: refactor some RDB loading code into dbAddRDBLoad(). 2020-04-09 16:21:48 +02:00
antirez
399a6b2b47 incrRefCount(): abort on statically allocated object. 2020-04-09 16:20:41 +02:00
antirez
451872527c More powerful DEBUG RELOAD.
Related to #3243.
2020-04-09 12:10:10 +02:00
liumiuyong
3fbfa1885c FIX: truncate max/min longitude,latitude related geo_point (ex: {180, 85.05112878} ) 2020-04-09 17:48:29 +08:00
antirez
3d5b2d41b5 RDB: clarify a condition in rdbLoadRio(). 2020-04-09 11:09:40 +02:00
antirez
30adc62232 RDB: load files faster avoiding useless free+realloc.
Reloading of the RDB generated by

    DEBUG POPULATE 5000000
    SAVE

is now 25% faster.

This commit also prepares the ability to have more flexibility when
loading stuff from the RDB, since we no longer use dbAdd() but can
control exactly how things are added in the database.
2020-04-09 10:24:46 +02:00
antirez
96a54866ab Speedup: unblock clients on keys in O(1).
See #7071.
2020-04-08 12:55:57 +02:00
hayleeliu
51b9de037d
fix spelling mistake in bitops.c 2020-04-08 18:20:32 +08:00
antirez
96688aa646 Fix ACL HELP table missing comma. 2020-04-08 10:56:47 +02:00
antirez
a6350f717d Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-04-07 14:10:43 +02:00
antirez
f69876280c Speedup INFO by counting client memory incrementally.
Related to #5145.

Design note: clients may change type when they turn into replicas or are
moved into the Pub/Sub category and so forth. Moreover the recomputation
of the bytes used is problematic for obvious reasons: it changes
continuously, so as a conservative way to avoid accumulating errors,
each client remembers the contribution it gave to the sum, and removes
it when it is freed or before updating it with the new memory usage.
2020-04-07 12:07:54 +02:00
Salvatore Sanfilippo
e93dcba46e
Merge pull request #7064 from mymilkbottles/unstable
Optimize lua log level judgment
2020-04-06 17:34:14 +02:00
Salvatore Sanfilippo
9a9109431b
Merge pull request #7065 from qetu3790/unstable
fix comments about RESIZE DB opcode in rdb.c
2020-04-06 17:32:44 +02:00
Salvatore Sanfilippo
094b47391d
Merge pull request #6243 from soloestoy/expand-lazy-free-server-del
lazyfree: add a new configuration lazyfree-lazy-user-del
2020-04-06 17:27:39 +02:00
qetu3790
2c42f6a8b8
fix comments about RESIZE DB opcode in rdb.c
fix comments about RESIZE DB opcode in rdb.c
2020-04-06 20:52:32 +08:00
antirez
121c51f4f3 Merge branch 'lcs' into unstable 2020-04-06 13:51:55 +02:00
antirez
ca8d6f1072 LCS: allow KEYS / STRINGS to be anywhere.
Initially they needed to be at the end so that we could extend to N
strings in the future, but after further consideration I no longer
believe it's worth it.
2020-04-06 13:48:31 +02:00
antirez
7261a5550f LCS: get rid of STOREIDX option. Fix get keys helper. 2020-04-06 13:32:15 +02:00
mymilkbottles
25063f75d7
Judge the log level in advance 2020-04-06 19:27:06 +08:00
Salvatore Sanfilippo
af5c11874c
Merge pull request #6797 from patpatbear/issue_#6565_memory_borderline
Check OOM at script start to get stable lua OOM state.
2020-04-06 11:59:01 +02:00
Guy Benoish
a76a961cdd Use __attribute__ only if __GNUC__ is defined 2020-04-03 14:49:40 +03:00
Salvatore Sanfilippo
f80b946bea
Merge pull request #6855 from guybe7/var_funcs_format_check
Modules: Perform printf-like format checks in variadic API
2020-04-03 13:46:27 +02:00
Guy Benoish
a8857320a5 Modules: Perform printf-like format checks in variadic API 2020-04-03 14:39:55 +03:00
Salvatore Sanfilippo
cbf212f981
Merge pull request #7030 from valentinogeron/xread-in-lua
XREAD and XREADGROUP should not be allowed from scripts when BLOCK op…
2020-04-03 11:14:13 +02:00
Salvatore Sanfilippo
4158664d2b
Merge pull request #6933 from guybe7/multi_exec_allow_stale
Stale replica should allow MULTI/EXEC
2020-04-03 11:12:58 +02:00
Salvatore Sanfilippo
4e8e7fb067
Merge pull request #7055 from zxdvd/patch-1
fix integer overflow
2020-04-03 11:10:26 +02:00
antirez
ef610802c7 LCS: fix stale comment. 2020-04-02 21:17:31 +02:00
Salvatore Sanfilippo
eb9ca33414
Merge pull request #6694 from oranagra/signal_modified_key
modules don't signalModifiedKey in setKey() since that's done (optionally) in RM_CloseKey
2020-04-02 19:00:20 +02:00
Xudong Zhang
78df016584 fix integer overflow 2020-04-02 23:43:47 +08:00
Guy Benoish
85a0d29d04 Stale replica should allow MULTI/EXEC
Example: Client uses a pipe to send the following to a
stale replica:

MULTI
.. do something ...
DISCARD

The replica will reply the MUTLI with -MASTERDOWN and
execute the rest of the commands... A client using a
pipe might not be aware that MULTI failed until it's
too late.

I can't think of a reason why MULTI/EXEC/DISCARD should
not be executed on stale replicas...

Also, enable MULTI/EXEC/DISCARD during loading
2020-04-02 18:23:59 +03:00
Salvatore Sanfilippo
0062194d74
Merge pull request #6654 from oranagra/fix_module_info_warning
fix possible warning on incomplete struct init
2020-04-02 16:32:20 +02:00
Salvatore Sanfilippo
10b626b3d5
Merge pull request #6546 from guybe7/fix_neg_zero
Make sure Redis does not reply with negative zero
2020-04-02 16:26:57 +02:00
Salvatore Sanfilippo
2f53ad30ee
Merge pull request #6813 from guybe7/debug_object_pass_keyname
DEBUG OBJECT should pass keyname to module when loading
2020-04-02 16:20:48 +02:00
antirez
5a3d85745a LCS: output LCS len as well in IDX mode. 2020-04-02 16:15:17 +02:00
antirez
3f96e1623d LCS: MINMATCHLEN and WITHMATCHLEN options. 2020-04-02 13:37:35 +02:00
Salvatore Sanfilippo
88351275fe
Merge pull request #6960 from devnexen/debug_arm_linux
debug, dump registers on arm too.
2020-04-02 11:26:08 +02:00
Salvatore Sanfilippo
fa4f50739a
Merge pull request #7006 from hwware/fixspelling
fix spelling in cluster.c clusterDelNode
2020-04-02 11:23:53 +02:00
Salvatore Sanfilippo
dfef407499
Merge pull request #7029 from valentinogeron/fix-xack
XACK should be executed in a "all or nothing" fashion.
2020-04-02 11:23:23 +02:00
Salvatore Sanfilippo
8d6dc136e1
Merge pull request #7041 from hwware/trackingfix
CLIENT TRACKING Command Fix: Add More Checking for OPTIN/OPTOUT mode
2020-04-02 11:22:30 +02:00
Salvatore Sanfilippo
b73d87f5e5
Merge pull request #7039 from guybe7/persist_ksn
PERSIST should notify a keyspace event
2020-04-02 11:21:20 +02:00
Salvatore Sanfilippo
babada8b5f
Merge pull request #7042 from guybe7/stream_cg_last_id_fix
streamReplyWithRange: Redundant XSETIDs to replica
2020-04-02 11:20:54 +02:00
antirez
80ec0431e8 Simplify comment in moduleTryServeClientBlockedOnKey(). 2020-04-02 11:20:09 +02:00
antirez
545a5046f5 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-04-02 11:18:33 +02:00
antirez
88e66ecf94 LCS: 7x speedup by accessing the array with better locality. 2020-04-01 23:45:07 +02:00
antirez
8cdc15c309 LCS: implement KEYS option. 2020-04-01 22:11:59 +02:00
antirez
4cbf3f5ddd LCS: other fixes to range emission. 2020-04-01 17:36:32 +02:00
antirez
c9c03c3ee6 LCS: fix emission of last range starting at index 0. 2020-04-01 17:14:40 +02:00
antirez
b3400559be LCS: implement range indexes option. 2020-04-01 17:11:31 +02:00
antirez
1010c1b43e LCS: initial functionality implemented. 2020-04-01 16:13:18 +02:00
Guy Benoish
c4dc5b80b2 Fix memory corruption in moduleHandleBlockedClients
By using a "circular BRPOPLPUSH"-like scenario it was
possible the get the same client on db->blocking_keys
twice (See comment in moduleTryServeClientBlockedOnKey)

The fix was actually already implememnted in
moduleTryServeClientBlockedOnKey but it had a bug:
the funxction should return 0 or 1 (not OK or ERR)

Other changes:
1. Added two commands to blockonkeys.c test module (To
   reproduce the case described above)
2. Simplify blockonkeys.c in order to make testing easier
3. cast raxSize() to avoid warning with format spec
2020-04-01 12:53:26 +03:00
antirez
38076fd6ba cast raxSize() to avoid warning with format spec. 2020-03-31 17:41:46 +02:00
antirez
1d13ff0b39 Minor changes to #7037. 2020-03-31 17:10:09 +02:00
Salvatore Sanfilippo
0c52ce6c8e
Merge pull request #7037 from guybe7/fix_module_replicate_multi
Modules: Test MULTI/EXEC replication of RM_Replicate
2020-03-31 17:00:57 +02:00
Salvatore Sanfilippo
a20c206de7
Merge pull request #7048 from guybe7/rename_unblock_stream
RENAME can unblock XREADGROUP
2020-03-31 16:55:29 +02:00
Guy Benoish
6c8221580c RENAME can unblock XREADGROUP
Other changes:
Support stream in serverLogObjectDebugInfo
2020-03-31 17:41:10 +03:00
Guy Benoish
d6eb3afd13 Modules: Test MULTI/EXEC replication of RM_Replicate
Makse sure call() doesn't wrap replicated commands with
a redundant MULTI/EXEC

Other, unrelated changes:
1. Formatting compiler warning in INFO CLIENTS
2. Use CLIENT_ID_AOF instead of UINT64_MAX
2020-03-31 13:55:51 +03:00
antirez
1b4bc60999 Merge branch 'pubsub_patterns_boost' of https://github.com/leeyiw/redis into leeyiw-pubsub_patterns_boost 2020-03-31 12:40:08 +02:00
antirez
9dcf878f1b Fix module commands propagation double MULTI bug.
37a10cef introduced automatic wrapping of MULTI/EXEC for the
alsoPropagate API. However this collides with the built-in mechanism
already present in module.c. To avoid complex changes near Redis 6 GA
this commit introduces the ability to exclude call() MUTLI/EXEC wrapping
for also propagate in order to continue to use the old code paths in
module.c.
2020-03-31 11:00:45 +02:00
antirez
7698316fda Fix RM_Call() stale comment due to cut&paste. 2020-03-31 10:27:47 +02:00
antirez
f6d5996ead Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-03-30 17:29:04 +02:00
antirez
3ef59b50c4 Precise timeouts: reference client pointer directly. 2020-03-30 15:22:59 +02:00
Guy Benoish
12d7479144 streamReplyWithRange: Redundant XSETIDs to replica
propagate_last_id is declared outside of the loop but used
only from within the loop. Once it's '1' it will never go
back to '0' and will replicate XSETID even for IDs that
don't actually change the last_id.
While not a serious bug (XSETID always used group->last_id
so there's no risk), it does causes redundant traffic
between master and its replicas
2020-03-30 10:53:03 +03:00
hwware
86c76cad74 add check for not switching between optin optout mode directly 2020-03-29 23:20:54 -04:00
hwware
1ef44f8243 add check for not providing both optin optout flag 2020-03-29 23:06:50 -04:00
Guy Benoish
3f0afab301 PERSIST should notify a keyspace event 2020-03-29 17:50:42 +03:00
Salvatore Sanfilippo
aca7f36b57
Merge pull request #7033 from OMG-By/unstable
fix: dict.c->dictResize()->minimal  type
2020-03-29 16:17:52 +02:00
OMG-By
6d2f1188ac
fix: dict.c->dictResize()->minimal type 2020-03-29 00:04:59 +08:00
zhaozhao.zz
36ee294e83 PSYNC2: reset backlog_idx and master_repl_offset correctly 2020-03-28 20:59:01 +08:00
antirez
dd7e61d77f timeout.c created: move client timeouts code there. 2020-03-27 16:35:03 +01:00
antirez
0e22cb2680 Precise timeouts: cleaup the table on unblock.
Now that this mechanism is the sole one used for blocked clients
timeouts, it is more wise to cleanup the table when the client unblocks
for any reason. We use a flag: CLIENT_IN_TO_TABLE, in order to avoid a
radix tree lookup when the client was already removed from the table
because we processed it by scanning the radix tree.
2020-03-27 16:35:03 +01:00
antirez
13e4c2a9b1 Precise timeouts: fix comments after functional change. 2020-03-27 16:35:03 +01:00
antirez
aa9d92d94a Precise timeouts: use only radix tree for timeouts. 2020-03-27 16:35:03 +01:00
antirez
077f965426 Precise timeouts: fast exit for clientsHandleShortTimeout(). 2020-03-27 16:35:03 +01:00
antirez
8d11e0df7a Precise timeouts: fix bugs in initial implementation. 2020-03-27 16:35:03 +01:00
antirez
324a8c91d0 Precise timeouts: working initial implementation. 2020-03-27 16:35:03 +01:00
antirez
8d116cc8a2 Precise timeouts: refactor unblocking on timeout. 2020-03-27 16:35:02 +01:00
antirez
97f1c808ce PSYNC2: fix backlog_idx when adjusting for meaningful offset
See #7002.
2020-03-27 16:20:02 +01:00
Valentino Geron
9a1843ef2d XREAD and XREADGROUP should not be allowed from scripts when BLOCK option is being used 2020-03-26 15:46:31 +02:00
Valentino Geron
1547d72cf3 XACK should be executed in a "all or nothing" fashion.
First, we must parse the IDs, so that we abort ASAP.
The return value of this command cannot be an error if
the client successfully acknowledged some messages,
so it should be executed in a "all or nothing" fashion.
2020-03-26 15:40:23 +02:00
Salvatore Sanfilippo
2ea7f0ecad
Merge pull request #6644 from oranagra/stream_aofrw
AOFRW on an empty stream created with MKSTREAM loads badkly
2020-03-26 11:12:44 +01:00
Oran Agra
3b29556a0c AOFRW on an empty stream created with MKSTREAM loads badkly
the AOF will be loaded successfully, but the stream will be missing,
i.e inconsistencies with the original db.

this was because XADD with id of 0-0 would error.

add a test to reproduce.
2020-03-25 21:47:57 +02:00
antirez
57fa355e56 PSYNC2: meaningful offset implemented.
A very commonly signaled operational problem with Redis master-replicas
sets is that, once the master becomes unavailable for some reason,
especially because of network problems, many times it wont be able to
perform a partial resynchronization with the new master, once it rejoins
the partition, for the following reason:

1. The master becomes isolated, however it keeps sending PINGs to the
replicas. Such PINGs will never be received since the link connection is
actually already severed.
2. On the other side, one of the replicas will turn into the new master,
setting its secondary replication ID offset to the one of the last
command received from the old master: this offset will not include the
PINGs sent by the master once the link was already disconnected.
3. When the master rejoins the partion and is turned into a replica, its
offset will be too advanced because of the PINGs, so a PSYNC will fail,
and a full synchronization will be required.

Related to issue #7002 and other discussion we had in the past around
this problem.
2020-03-25 15:26:37 +01:00
antirez
f15042dbf0 Explain why we allow transactions in -BUSY state.
Related to #7022.
2020-03-25 12:46:59 +01:00
Oran Agra
ec007559ff MULTI/EXEC during LUA script timeout are messed up
Redis refusing to run MULTI or EXEC during script timeout may cause partial
transactions to run.

1) if the client sends MULTI+commands+EXEC in pipeline without waiting for
response, but these arrive to the shards partially while there's a busy script,
and partially after it eventually finishes: we'll end up running only part of
the transaction (since multi was ignored, and exec would fail).

2) similar to the above if EXEC arrives during busy script, it'll be ignored and
the client state remains in a transaction.

the 3rd test which i added for a case where MULTI and EXEC are ok, and
only the body arrives during busy script was already handled correctly
since processCommand calls flagTransaction
2020-03-23 20:45:32 +02:00
antirez
c80d81c80a Improve comments of replicationCacheMasterUsingMyself(). 2020-03-23 16:17:35 +01:00
antirez
61de1c1146 Fix BITFIELD_RO test. 2020-03-23 12:02:12 +01:00
antirez
918086e253 Abort transactions after -READONLY error. Fix #7014. 2020-03-23 11:47:49 +01:00
antirez
38514e3c8d Minor changes to BITFIELD_RO PR #6951. 2020-03-23 11:28:09 +01:00
Salvatore Sanfilippo
493a7f9823
Merge pull request #6951 from yangbodong22011/feature-bitfield-ro
Added BITFIELD_RO variants for read-only operations.
2020-03-23 11:23:21 +01:00
antirez
19f5be231d Modules: updated function doc after #7003. 2020-03-23 11:17:50 +01:00
Salvatore Sanfilippo
7c5dc07016
Merge pull request #7003 from guybe7/rm_context_flags_handle_null
Allow RM_GetContextFlags to work with ctx==NULL
2020-03-23 11:15:42 +01:00
Salvatore Sanfilippo
b9e5be5f56
Merge pull request #7005 from hwware/memoryleakfix-redis-cli
fix potential memory leak in redis-cli lua debug mode
2020-03-23 11:14:46 +01:00
Salvatore Sanfilippo
89f46f0fa1
Merge pull request #7018 from yossigo/fix-accept-issues
Fix issues with failed/rejected accepts.
2020-03-23 11:10:59 +01:00
Salvatore Sanfilippo
d1788a5ddb
Merge pull request #7019 from hwware/cscfix
Fix Bug for Client Side Caching: Unexpected Behaviour when Switching between OPTIN/OPTOUT Mode
2020-03-23 11:09:55 +01:00
hwware
34d5982bd5 remove redundant Semicolon 2020-03-23 01:07:46 -04:00
hwware
a2732291cd clean CLIENT_TRACKING_CACHING flag when disabled caching 2020-03-23 01:04:49 -04:00
Yossi Gottlieb
2dab5015b7 Fix crashes related to failed/rejected accepts. 2020-03-22 14:47:44 +02:00
Yossi Gottlieb
4c08ae3ff6 Cluster: fix misleading accept errors. 2020-03-22 14:46:16 +02:00
Yossi Gottlieb
fa9aa90813 Conns: Fix connClose() / connAccept() behavior.
We assume accept handlers may choose to reject a connection and close
it, but connAccept() callers can't distinguish between this state and
other error states requiring connClose().

This makes it safe (and mandatory!) to always call connClose() if
connAccept() fails, and safe for accept handlers to close connections
(which will defer).
2020-03-22 14:42:03 +02:00
Salvatore Sanfilippo
5634ee973c
Merge pull request #7013 from hwware/clusterhelpfix
add missing commands description in cluster help
2020-03-20 16:33:10 +01:00
hwware
93bb42a0b5 add missing commands in cluster help 2020-03-20 09:01:12 -04:00
antirez
1e16b9384d Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-03-20 13:21:28 +01:00
antirez
f9c56dbb09 ACL: default user off should not allow automatic authentication.
This fixes issue #7011.
2020-03-20 12:45:48 +01:00
hwware
262262fbb2 fix spelling in cluster.c 2020-03-18 09:48:03 -04:00
hwware
86691ccff5 fix potentical memory leak in redis-cli 2020-03-18 09:33:52 -04:00
Guy Benoish
f16eaadd4f Allow RM_GetContextFlags to work with ctx==NULL 2020-03-18 18:34:27 +05:30
Salvatore Sanfilippo
c1295bb9f1
Merge pull request #6996 from artix75/redis_cli_proxy_info
Support Redis Cluster Proxy PROXY INFO command
2020-03-18 11:06:49 +01:00
WuYunlong
f6029fb925 Fix master replica inconsistency for upgrading scenario.
Before this commit, when upgrading a replica, expired keys will not
be loaded, thus causing replica having less keys in db. To this point,
master and replica's keys is logically consistent. However, before
the keys in master and replica are physically consistent, that is,
they have the same dbsize, if master got a problem and the replica
got promoted and becomes new master of that partition, and master
updates a key which does not exist on master, but physically exists
on the old master(new replica), the old master would refuse to update
the key, thus causing master and replica data inconsistent.

How could this happen?
That's all because of the wrong judgement of roles while starting up
the server. We can not use server.masterhost to judge if the server
is master or replica, since it fails in cluster mode.

When we start the server, we load rdb and do want to load expired keys,
and do not want to have the ability to active expire keys, if it is
a replica.
2020-03-18 16:22:07 +08:00
antirez
29b9d0a245 ACL: Make Redis 6 more backward compatible with requirepass.
Note that this as a side effect fixes Sentinel "requirepass" mode.
2020-03-16 16:57:12 +01:00
artix
771df8a436 Support Redis Cluster Proxy PROXY INFO command 2020-03-16 16:15:02 +01:00
antirez
9321c7871f Sentinel: implement auth-user directive for ACLs. 2020-03-16 15:59:34 +01:00
Salvatore Sanfilippo
15338ab694
Merge pull request #6991 from soloestoy/io-threads-bugfix
Threaded IO: bugfix client kill may crash redis
2020-03-16 10:53:54 +01:00
Salvatore Sanfilippo
f1e4af2c29
Merge pull request #6993 from soloestoy/optimize-threaded-io
Threaded IO: handle pending reads clients ASAP after event loop
2020-03-16 10:48:23 +01:00
zhaozhao.zz
c46c76a399 Threaded IO: handle pending reads clients ASAP after event loop 2020-03-16 11:20:48 +08:00
zhaozhao.zz
a6a0e05a1a Threaded IO: bugfix client kill may crash redis 2020-03-15 23:30:25 +08:00
antirez
573c4673ee Aesthetic changes in PR #6989. 2020-03-15 16:10:37 +01:00
zhaozhao.zz
606a01df70 Threaded IO: bugfix #6988 process events while blocked 2020-03-15 22:07:36 +08:00
antirez
453e01a091 Restore newline at the end of redis-cli.c 2020-03-13 16:21:55 +01:00
Salvatore Sanfilippo
ebf1acd33c
Merge pull request #6918 from chendq8/fixModuleUnregisterUsedApi
Fix module unregister used api
2020-03-13 12:46:27 +01:00
Salvatore Sanfilippo
0628030bf4
Merge pull request #6961 from guodongxiaren/pr
string literal should be const char*
2020-03-13 12:37:08 +01:00
Salvatore Sanfilippo
cf6cbbb881
Merge pull request #6976 from itamarhaber/ksn-patch
Adds keyspace notifications to migrate and restore
2020-03-13 12:35:00 +01:00
Salvatore Sanfilippo
3c95c92b0f
Merge pull request #6977 from yangbodong22011/fix-makefile-duplicate-obj
Remove duplicate obj files in Makefile
2020-03-13 12:32:03 +01:00
Salvatore Sanfilippo
b1db7acf72
Merge pull request #6980 from fengpf/fix_latency_comments
fix comments in latency.c
2020-03-13 12:26:18 +01:00
fengpf
a5f5091041 fix comments in latency.c 2020-03-12 20:44:32 +08:00
antirez
2091d73ef5 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-03-12 13:25:01 +01:00
antirez
513931dfea ae.c: fix crash when resizing the event loop.
See #6964. The root cause is that the event loop may be resized from an
event callback itself, causing the event pointer to be invalid.
2020-03-12 13:24:30 +01:00
bodong.ybd
63c4697b46 Remove duplicate obj files in Makefile 2020-03-12 11:12:37 +08:00
Itamar Haber
7d703de7e9 Adds keyspace notifications to migrate and restore 2020-03-11 18:43:03 +02:00
Salvatore Sanfilippo
bd28dbee0e
Merge pull request #6834 from lifubang/askpassword
add askpass mode
2020-03-10 16:51:36 +01:00
guodongxiaren
106a57c5ae string literal should be const char* 2020-03-07 19:38:27 +08:00
David Carlier
6548157293 debug, dump registers on arm too. 2020-03-07 10:43:41 +00:00
Salvatore Sanfilippo
13707f988b
Merge pull request #6687 from jtru/systemd-integration-fixes
Signal systemd readiness atfer Partial Resync
2020-03-06 13:15:10 +01:00
lifubang
1b72f4b749 add askpass mode
Signed-off-by: lifubang <lifubang@acmcoder.com>
2020-03-05 18:17:32 +08:00
antirez
45ee620e9c Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-03-05 10:54:51 +01:00
antirez
3bab69e921 Make sync RDB deletion configurable. Default to no. 2020-03-04 17:44:21 +01:00
bodong.ybd
94376f46ad Added BITFIELD_RO variants for read-only operations. 2020-03-04 20:51:45 +08:00
antirez
d16bb64fa4 Check that the file exists in removeRDBUsedToSyncReplicas(). 2020-03-04 12:55:49 +01:00
antirez
ff024e3064 Log RDB deletion in persistence-less instances. 2020-03-04 11:19:55 +01:00
antirez
f0acdee4c5 Introduce bg_unlink(). 2020-03-04 11:10:54 +01:00
antirez
5e2319c326 Remove RDB files used for replication in persistence-less instances. 2020-03-03 14:58:15 +01:00
Salvatore Sanfilippo
f88f8661ac
Merge pull request #6804 from qetu3790/unstable
Fix not used constant in lru_test_mode.
2020-03-02 17:43:36 +01:00
Salvatore Sanfilippo
d3e8f3fb62
Merge pull request #6923 from hwware/marcofix
add missing marco in sdsalloc.h
2020-03-02 17:07:41 +01:00
Salvatore Sanfilippo
bd07f121b9
Merge pull request #6944 from ShooterIT/acl-compiler-warning
To avoid compiler warnings
2020-03-02 16:53:17 +01:00
antirez
6dd8de1774 Use a smaller getkeys global buffer.
The idea is that very few commands have a lot of keys, and when this
happens the allocation time becomes neglegible.
2020-03-02 16:49:11 +01:00
Salvatore Sanfilippo
7ca81170c7
Merge pull request #6836 from oranagra/opt_get_keys_malloc
Optimize temporary memory allocations for getKeysFromCommand mechanism
2020-03-02 16:48:05 +01:00
ShooterIT
98b23cce29 Avoid compiler warnings 2020-02-29 18:28:41 +08:00
antirez
c8ae90fef6 Modules: reformat RM_Scan() top comment a bit. 2020-02-28 18:09:46 +01:00
antirez
8a3e9a6d44 Modules: more details in RM_Scan API top comment. 2020-02-28 18:06:30 +01:00
Salvatore Sanfilippo
86cbddc475
Merge pull request #6838 from oranagra/rm_scan_dict_rehash
RM_Scan disable dict rehashing
2020-02-28 17:47:52 +01:00
Salvatore Sanfilippo
4ccb56d0e6
Merge pull request #6828 from guybe7/module_string_from_double
Add RM_CreateStringFromDouble
2020-02-28 11:06:02 +01:00
Salvatore Sanfilippo
d7f18f5019
Merge pull request #6862 from oranagra/command_info_no_auth
add no_auth to COMMAND INFO
2020-02-28 11:05:31 +01:00
Salvatore Sanfilippo
f0d9a4e1a4
Merge pull request #6893 from oranagra/api_doc_aux_save
module api docs for aux_save and aux_load
2020-02-28 10:22:53 +01:00
antirez
d4e375fc1e Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-02-27 18:22:22 +01:00
antirez
45f318d2ff Show Redis version when not understanding a config directive.
This makes simpler to give people help when posting such kind of errors
in the mailing list or other help forums, because sometimes the
directive looks well spelled, but the version of Redis they are using is
not able to support it.
2020-02-27 18:21:12 +01:00
Salvatore Sanfilippo
cf31602bce
Merge pull request #6677 from guybe7/deocde_id_once
streamReplyWithRangeFromConsumerPEL: Redundant streamDecodeID
2020-02-27 18:09:48 +01:00