Commit Graph

9738 Commits

Author SHA1 Message Date
Oran Agra
b4416280cf fix unstable replication test
this test which has coverage for varoius flows of diskless master was
failing randomly from time to time.

the failure was:
[err]: diskless all replicas drop during rdb pipe in tests/integration/replication.tcl
log message of '*Diskless rdb transfer, last replica dropped, killing fork child*' not found

what seemed to have happened is that the master didn't detect that all
replicas dropped by the time the replication ended, it thought that one
replica is still connected.

now the test takes a few seconds longer but it seems stable.
2020-05-12 08:59:09 +03:00
Oran Agra
905e28ee87 fix redis 6.0 not freeing closed connections during loading.
This bug was introduced by a recent change in which readQueryFromClient
is using freeClientAsync, and despite the fact that now
freeClientsInAsyncFreeQueue is in beforeSleep, that's not enough since
it's not called during loading in processEventsWhileBlocked.
furthermore, afterSleep was called in that case but beforeSleep wasn't.

This bug also caused slowness sine the level-triggered mode of epoll
kept signaling these connections as readable causing us to keep doing
connRead again and again for ll of these, which keep accumulating.

now both before and after sleep are called, but not all of their actions
are performed during loading, some are only reserved for the main loop.

fixes issue #7215
2020-05-11 11:33:46 +03:00
WuYunlong
70c4851f2c Handle keys with hash tag when computing hash slot using tcl cluster client. 2020-05-11 13:14:18 +08:00
WuYunlong
bc9efb577b Add a test to prove current tcl cluster client can not handle keys with hash tag. 2020-05-11 13:14:18 +08:00
Yossi Gottlieb
450f0d7248 TLS: Add crypto locks for older OpenSSL support.
This is really required only for older OpenSSL versions.

Also, at the moment Redis does not use OpenSSL from multiple threads so
this will only be useful if modules end up doing that.
2020-05-10 17:40:31 +03:00
Yossi Gottlieb
4d1178cc24 TLS: Fix test failures on recent Debian/Ubuntu.
Seems like on some systems choosing specific TLS v1/v1.1 versions no
longer works as expected. Test is reduced for v1.2 now which is still
good enough to test the mechansim, and matters most anyway.
2020-05-10 17:38:04 +03:00
antirez
1750513ac7 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-05-09 11:13:32 +02:00
antirez
4387ba6a17 Cluster: clarify we always resolve the sender. 2020-05-09 11:12:51 +02:00
antirez
79de9d6c78 Cluster: refactor ping/data delay handling. 2020-05-09 11:10:38 +02:00
antirez
00a3bc4359 Cluster: introduce data_received field.
We want to send pings and pongs at specific intervals, since our packets
also contain information about the configuration of the cluster and are
used for gossip. However since our cluster bus is used in a mixed way
for data (such as Pub/Sub or modules cluster messages) and metadata,
sometimes a very busy channel may delay the reception of pong packets.
So after discussing it in #7216, this commit introduces a new field that
is not exposed in the cluster, is only an internal information about
the last time we received any data from a given node: we use this field
in order to avoid detecting failures, claiming data reception of new
data from the node is a proof of liveness.
2020-05-09 11:10:35 +02:00
Salvatore Sanfilippo
5fa6f9ebe1
Merge pull request #7204 from ShooterIT/benchmark-fix
Redis Benchmark: Fix coredump because of double free
2020-05-08 10:53:20 +02:00
ShooterIT
4afa243ff1 Use dictSize to get the size of dict in dict.c 2020-05-07 11:04:08 +08:00
antirez
e17f9311c8 stringmatchlen() should not expect null terminated strings. 2020-05-06 16:18:21 +02:00
Salvatore Sanfilippo
2e2f57e23b
Merge pull request #7201 from braddunbar/stringmatchlen
Remove unreachable branch.
2020-05-06 16:17:10 +02:00
Salvatore Sanfilippo
028eb45723
Merge pull request #7207 from hwware/redisconffixx
add jemalloc-bg-thread config in redis conf
2020-05-06 15:42:03 +02:00
Salvatore Sanfilippo
18c4c7bfe7
Merge pull request #7206 from hwware/lolwutmarcofix
add include guard for lolwut.h
2020-05-06 15:40:26 +02:00
hwware
9cfb1c88d6 add jemalloc-bg-thread config in redis conf 2020-05-06 01:07:17 -04:00
hwware
24173d11bf add include guard for lolwut.h 2020-05-05 23:35:08 -04:00
Salvatore Sanfilippo
54cb8214d9
Merge pull request #7175 from bsergean/bsergean-patch-1
redis-cli cluster reshard does not work with ACL (AUTH2 MIGRATE args un-implemented)
2020-05-05 18:22:24 +02:00
ShooterIT
150ba0e1ff Redis Benchmark: Fix coredump because of double free 2020-05-05 23:09:45 +08:00
Brad Dunbar
5508c228e7
Remove unreachable branch. 2020-05-05 09:57:01 -04:00
antirez
373a3384ac Don't propagate spurious MULTI on DEBUG LOADAOF. 2020-05-05 15:50:00 +02:00
antirez
51ab31dbab Dump recent backlog on master query generating errors. 2020-05-05 13:40:33 +02:00
antirez
415c4f613c Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-05-05 13:19:01 +02:00
antirez
e49d97298a Test: --dont-clean should do first cleanup. 2020-05-05 13:18:53 +02:00
Salvatore Sanfilippo
64347aaaf9
Merge pull request #7200 from titouanc/fix-redis6-uclibc
make struct user anonymous (only typedefed) in server.h
2020-05-05 11:42:43 +02:00
Titouan Christophe
1f246bfcc8 make struct user anonymous (only typedefed)
This works because this struct is never referenced by its name,
but always by its type.

This prevents a conflict with struct user from <sys/user.h>
when compiling against uclibc.

Signed-off-by: Titouan Christophe <titouan.christophe@railnova.eu>
2020-05-05 11:35:03 +02:00
Salvatore Sanfilippo
140c20fb5e
Merge pull request #7197 from bsergean/patch-1
Add --user argument to redis-benchmark.c (ACL)
2020-05-05 10:28:35 +02:00
antirez
5fdc5e5c25 Drop not needed part from #7194. 2020-05-05 10:27:27 +02:00
Salvatore Sanfilippo
154e735c46
Merge pull request #7194 from tryfinally/dev-reverse-bits
Fixed compiler warnings on rev(ulong) function
2020-05-05 10:26:02 +02:00
antirez
8257a3c1f6 Move CRC64 initialization in main(). 2020-05-05 10:20:48 +02:00
antirez
1063f1d833 Fix CRC64 initialization outside the Redis server itself. 2020-05-05 10:09:28 +02:00
Benjamin Sergeant
538c2b2d8d
Add --user argument to redis-benchmark.c (ACL) 2020-05-04 08:09:21 -07:00
Muhammad Zahalqa
4477ee33ac Fix compiler warnings on function rev(unsigned long) 2020-05-04 12:36:01 +03:00
antirez
70a80ef3ad Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-05-04 11:09:32 +02:00
antirez
6fe2b5236d Fix NetBSD build by fixing redis_set_thread_title() support.
See #7188.
2020-05-04 11:09:02 +02:00
Salvatore Sanfilippo
1aee086a09
Merge pull request #7192 from hwware/trackingprefix
Client Side Caching: Add Number of Tracking Prefix Stats in Server Info
2020-05-04 11:06:44 +02:00
antirez
68b5eed41d Rework a bit the documentation for CPU pinning. 2020-05-04 11:05:48 +02:00
antirez
fe9acb3469 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-05-04 10:57:20 +02:00
Salvatore Sanfilippo
acf566b291
Merge pull request #7179 from bytedance/cpu-affinity
Support setcpuaffinity on linux/bsd
2020-05-04 10:56:20 +02:00
Salvatore Sanfilippo
68ad748e77
Merge pull request #7190 from guybe7/fix_consumer_seen_time
XPENDING should not update consumer's seen-time
2020-05-04 10:50:22 +02:00
Guy Benoish
bce3d08c66 XPENDING should not update consumer's seen-time
Same goes for XGROUP DELCONSUMER (But in this case, it doesn't
have any visible effect)
2020-05-04 11:40:42 +03:00
Salvatore Sanfilippo
b3f3d5a42f
Merge pull request #7176 from oranagra/fix-optimize-reply-buffer
optimize memory usage of deferred replies - fixed
2020-05-04 10:20:31 +02:00
Salvatore Sanfilippo
57697373ef
Merge pull request #7191 from deliangyang/patch-1
reformat code
2020-05-04 10:14:24 +02:00
Salvatore Sanfilippo
7dcf3eb3fc
Merge pull request #7184 from oranagra/nightly-actions
add daily github actions with libc malloc and valgrind, fix leaks and timing issues
2020-05-04 10:11:24 +02:00
Oran Agra
deee2c1ef2 add daily github actions with libc malloc and valgrind
* fix memlry leaks with diskless replica short read.
* fix a few timing issues with valgrind runs
* fix issue with valgrind and watchdog schedule signal

about the valgrind WD issue:
the stack trace test in logging.tcl, has issues with valgrind:
==28808== Can't extend stack to 0x1ffeffdb38 during signal delivery for thread 1:
==28808==   too small or bad protection modes

it seems to be some valgrind bug with SA_ONSTACK.
SA_ONSTACK seems unneeded since WD is not recursive (SA_NODEFER was removed),
also, not sure if it's even valid without a call to sigaltstack()
2020-05-04 09:52:20 +03:00
Deliang Yang
e598d9b59e
reformat code 2020-05-04 01:57:38 +08:00
hwware
e697ef6dec Client Side Caching: Add Tracking Prefix Number Stats in Server Info 2020-05-02 19:20:44 -04:00
zhenwei pi
1a0deab2a5 Support setcpuaffinity on linux/bsd
Currently, there are several types of threads/child processes of a
redis server. Sometimes we need deeply optimise the performance of
redis, so we would like to isolate threads/processes.

There were some discussion about cpu affinity cases in the issue:
https://github.com/antirez/redis/issues/2863

So implement cpu affinity setting by redis.conf in this patch, then
we can config server_cpulist/bio_cpulist/aof_rewrite_cpulist/
bgsave_cpulist by cpu list.

Examples of cpulist in redis.conf:
server_cpulist 0-7:2      means cpu affinity 0,2,4,6
bio_cpulist 1,3           means cpu affinity 1,3
aof_rewrite_cpulist 8-11  means cpu affinity 8,9,10,11
bgsave_cpulist 1,10-11    means cpu affinity 1,10,11

Test on linux/freebsd, both work fine.

Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
2020-05-02 21:19:47 +08:00
Oran Agra
6726b3c2cb optimize memory usage of deferred replies - fixed
When deffered reply is added the previous reply node cannot be used so
all the extra space we allocated in it is wasted. in case someone uses
deffered replies in a loop, each time adding a small reply, each of
these reply nodes (the small string reply) would have consumed a 16k
block.
now when we add anther diferred reply node, we trim the unused portion
of the previous reply block.

see #7123

cherry picked from commit fb732f7a94
with fix to handle a crash with LIBC allocator, which apparently can
return the same pointer despite changing it's size.
i.e. shrinking an allocation of 16k into 56 bytes without changing the
pointer.
2020-05-02 07:52:03 +03:00