7278 Commits

Author SHA1 Message Date
John Sully
ffc3aefc41 Latency fixes
Former-commit-id: 6857c4c2085d3b0902d7b2ece66b3fe8828dd805
2020-07-01 21:59:38 -04:00
Muhammad Zahalqa
f024fe30f4 replace memcpy with cctor on objects
Former-commit-id: 52897f8f9a882bcdbd1e8ede6bdf24e7435f5ce8
2020-06-24 23:20:59 -04:00
Muhammad Zahalqa
ec28161271 unique lock used with cv.wait already owns mutex
Former-commit-id: 8bc70e9840222d11507af30a6db27210b16650a2
2020-06-24 23:18:53 -04:00
Muhammad Zahalqa
63bb6cb419 Fix bug in condition_variabe.wait usage
consition variable wait should always be called with a locked mutex.
This code break the pre-conditions of using wait.


Former-commit-id: 5b81303f04580010f043e518a109b43971a63054
2020-06-24 23:18:53 -04:00
Muhammad Zahalqa
e25ec37484 fixes for robj_sharedptr
1. fix cases where null pointer might be accessed
2. make assignmnet op safe
3. make operator bool explicit (safe bool idiom)
4. make comparison operators symetric

fix robj_sharedptr use in rdb.cpp


Former-commit-id: ede524c0647c0875f1071978f26ff785c8d1183e
2020-06-24 23:18:27 -04:00
Muhammad Zahalqa
c4cd846388 aeCommand objects no need for memset and missing init of some memebers.
Former-commit-id: aeed09c34620e465b57f1d83553d259c4f6d892f
2020-06-24 23:15:29 -04:00
antirez
d05cc51e4e help.h updated. 2020-06-12 12:16:24 +02:00
antirez
3dc6657ea8 LPOS: tests + crash fix. 2020-06-12 12:08:06 +02:00
antirez
010dd2b320 LPOS: update to latest proposal.
See https://gist.github.com/antirez/3591c5096bc79cad8b5a992e08304f48
2020-06-12 12:08:06 +02:00
antirez
00e400ed66 LPOS: implement the final design. 2020-06-12 12:08:06 +02:00
Paul Spooren
795c807fed LRANK: Add command (the command will be renamed LPOS).
The `LRANK` command returns the index (position) of a given element
within a list. Using the `direction` argument it is possible to specify
going from head to tail (acending, 1) or from tail to head (decending,
-1). Only the first found index is returend. The complexity is O(N).

When using lists as a queue it can be of interest at what position a
given element is, for instance to monitor a job processing through a
work queue. This came up within the Python `rq` project which is based
on Redis[0].

[0]: https://github.com/rq/rq/issues/1197

Signed-off-by: Paul Spooren <mail@aparcar.org>
2020-06-12 12:08:06 +02:00
John Sully
49fecbe1d4 Implement replicaof remove as requested in issue #192
Former-commit-id: 70b80aa5fad6c2191c2142ce49626b81d0950fa8
2020-06-09 12:43:58 -04:00
antirez
ce8f107a5e Redis 6.0.5. 2020-06-09 12:19:30 +02:00
antirez
e819e3ee26 Temporary fix for #7353 issue about EVAL during -BUSY. 2020-06-09 11:53:01 +02:00
xhe
5fae6590a1 return the correct proto version
HELLO should return the current proto version, while the code hardcoded
3
2020-06-09 11:53:01 +02:00
Oran Agra
640a4479b0 Don't queue commands in an already aborted MULTI state 2020-06-09 11:53:01 +02:00
Oran Agra
881d2c4663 Avoid rejecting WATCH / UNWATCH, like MULTI/EXEC/DISCARD
Much like MULTI/EXEC/DISCARD, the WATCH and UNWATCH are not actually
operating on the database or server state, but instead operate on the
client state. the client may send them all in one long pipeline and check
all the responses only at the end, so failing them may lead to a
mismatch between the client state on the server and the one on the
client end, and execute the wrong commands (ones that were meant to be
discarded)

the watched keys are not actually stored in the client struct, but they
are in fact part of the client state. for instance, they're not cleared
or moved in SWAPDB or FLUSHDB.
2020-06-09 11:53:01 +02:00
zhaozhao.zz
d496ce7271 AOF: append origin SET if no expire option 2020-06-09 11:53:01 +02:00
Oran Agra
216b5a1aae fix disconnectSlaves, to try to free each slave.
the recent change in that loop (iteration rather than waiting for it to
be empty) was intended to avoid an endless loop in case some slave would
refuse to be freed.

but the lookup of the first client remained, which would have caused it
to try the first one again and again instead of moving on.
2020-06-09 11:53:01 +02:00
zhaozhao.zz
2a8ee55176 donot free protected client in freeClientsInAsyncFreeQueue
related #7234
2020-06-09 11:53:01 +02:00
John Sully
76070d51a6 Update gcov for C++
Former-commit-id: e8d4d095cc5268fb35170dd1f2cb56e25c3d2b69
2020-06-08 16:48:44 -04:00
John Sully
ad4d76422c Some valgrind fixes
Former-commit-id: ba974c9810dc30b6b5bd21c4bcc6cc5b219f7ea4
2020-06-07 23:20:10 -04:00
John Sully
f252cc9e41 fix valgrind false error
Former-commit-id: 9817db7eddf06becd151e5fef7cc6808777c49cb
2020-06-07 20:17:47 -04:00
Kevin Fwu
ce014c2a3b Fix TLS certificate loading for chained certificates.
This impacts client verification for chained certificates (such as Lets
Encrypt certificates). Client Verify requires the full chain in order to
properly verify the certificate.
2020-06-06 11:44:21 +02:00
antirez
bec1ac9899 Revert "Implements sendfile for redis."
This reverts commit 5675053269b0cbc2cf525c99321c96b7c2b39abe.
2020-06-06 11:43:29 +02:00
antirez
8bfdba1e08 Revert "avoid using sendfile if tls-replication is enabled"
This reverts commit 13bbd165e87923558952203d310e9ad053d4d7c0.
2020-06-06 11:43:29 +02:00
Liu Zhen
123d94ffc0 fix clusters mixing accidentally by gossip
`clusterStartHandshake` will start hand handshake
and eventually send CLUSTER MEET message, which is strictly prohibited
in the REDIS CLUSTER SPEC.
Only system administrator can initiate CLUSTER MEET message.
Futher, according to the SPEC, rather than IP/PORT pairs, only nodeid
can be trusted.
2020-06-06 11:43:29 +02:00
antirez
a5f0fa7f7a Fix handling of special chars in ACL LOAD.
Now it is also possible for ACL SETUSER to accept empty strings
as valid operations (doing nothing), so for instance

    ACL SETUSER myuser ""

Will have just the effect of creating a user in the default state.

This should fix #7329.
2020-06-06 11:43:29 +02:00
John Sully
779023beff Ensure CRON jobs run in a clean environment
Former-commit-id: c6dce838b7cc94e115fd73a64dda663f0a2c28c5
2020-06-05 21:35:47 -04:00
John Sully
64adf015b1 Undecorated new is OK to use
Former-commit-id: 5b885bb1649805f6a2edb8d28edd1447bb6c4843
2020-06-01 23:36:01 -04:00
John Sully
b2a885c98f Remove debug logs that shouldn't have been checked in
Former-commit-id: 31f58311e3de7441d81dd37bd4396be3b64efec5
2020-06-01 16:34:05 -04:00
John Sully
9e87395c34 Fix for issue #187 we need to properly handle the case where a key with a subkey expirey itself expires during load
Former-commit-id: e6a9a6b428b91b6108df24ae6285ea9b582b7b23
2020-06-01 15:33:19 -04:00
John Sully
0a9a32e5d7 Fix module multithreaded test failures
Former-commit-id: 1ef35cf466ea944c56974b3795d7d6b5e89f5a3d
2020-05-31 23:46:12 -04:00
John Sully
08fca5ef31 sendfile has high latency in some scenarios, don't use it
Former-commit-id: 1eb0e3c1c604e71c54423f1d11b8c709c847a516
2020-05-31 23:22:25 -04:00
John Sully
b30fa046f4 we must always respect the output of sdscat, also change the string so its not a substring of other config params
Former-commit-id: e50313b20718bc8df0a53c11b0960e4bcb2177d4
2020-05-31 23:22:10 -04:00
John Sully
4b317392be Don't start multimaster tests until all nodes are connected
Former-commit-id: 202b97eff76501e736a2f0969607e3297e9703a4
2020-05-31 22:50:30 -04:00
John Sully
7eb0563241 Active replicas referencing eachother should connect one at a time
Former-commit-id: c0c033a0c175eebdf2173e6e4e59e792d2fe4285
2020-05-31 16:03:50 -04:00
John Sully
891977d9b7 Fix race in futex_sleep
Former-commit-id: 73300c57005a49bafbfc44db9c40ba7d1d4eedce
2020-05-31 16:03:50 -04:00
John Sully
d344d9b0b9 Auto tune lock for high CPU tension scenarios
Former-commit-id: 8edbae2e04538f82a146a6c2b459a6dfcacf99b2
2020-05-30 18:22:27 -04:00
John Sully
baadab90e7 We only want one master connection in progress at a time, ensure that if the connection fails we try a different master
Former-commit-id: 8a0441c14475dc54616337270e092068acaa274a
2020-05-30 15:13:28 -04:00
John Sully
f37ee5bd4d TLS requires we explicitly marshal connected sockets when using them on a different thread
Former-commit-id: 341a8caef959883ca6fc71f81f8a3fed747b2341
2020-05-30 01:14:53 -04:00
Ben Schermel
be6f1df429 centos build fix
Former-commit-id: f17c492a633ea2be99567dfe2f8a59c0b0136d86
2020-05-29 22:23:48 -04:00
John Sully
5316f656d9 sendFile blocks too long for use with active replication
Former-commit-id: aad6a7ce159a3679633020dc407a2068129bbd49
2020-05-29 20:27:45 -04:00
John Sully
68bf5a04a0 Unify beforeSleep handling
Former-commit-id: 1cb48c7bf6a7e91e728a677902a7bfc64fe80dd6
2020-05-29 17:44:55 -04:00
John Sully
f18ba66242 Cluster crash
Former-commit-id: f25c405ad2a8004b79a816072cb011c1dc2407d5
2020-05-29 03:40:52 -04:00
John Sully
ed2e0e66f6 Merge tag '6.0.4' into unstable
Redis 6.0.4.


Former-commit-id: 9c31ac7925edba187e527f506e5e992946bd38a6
2020-05-29 00:57:07 -04:00
John Sully
71fbeb65b6 fix TLS test failure
Former-commit-id: 57ca6facc3038e005656912b6378cb7fbe04f55a
2020-05-28 23:16:27 -04:00
antirez
c512f64428 Redis 6.0.4. 2020-05-28 12:18:38 +02:00
antirez
84117d13b7 Replication: showLatestBacklog() refactored out. 2020-05-28 10:09:51 +02:00
antirez
14d99c183f Drop useless line from replicationCacheMaster(). 2020-05-28 10:09:51 +02:00