11922 Commits

Author SHA1 Message Date
antirez
e512707aed Precise timeouts: fix bugs in initial implementation. 2020-03-31 16:56:46 +02:00
antirez
cedeec01f2 Precise timeouts: working initial implementation. 2020-03-31 16:56:46 +02:00
antirez
b636856df0 Precise timeouts: refactor unblocking on timeout. 2020-03-31 16:56:46 +02:00
antirez
577656841f PSYNC2: fix backlog_idx when adjusting for meaningful offset
See #7002.
2020-03-31 16:56:46 +02:00
Salvatore Sanfilippo
af2bab8131 Merge pull request #7048 from guybe7/rename_unblock_stream
RENAME can unblock XREADGROUP
2020-03-31 16:55:29 +02:00
Guy Benoish
e5309fea93 RENAME can unblock XREADGROUP
Other changes:
Support stream in serverLogObjectDebugInfo
2020-03-31 17:41:10 +03:00
Guy Benoish
fd914fdd52 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
伯成
2a13f59a18 Boost up performance for redis PUB-SUB patterns matching
If lots of clients PSUBSCRIBE to same patterns, multiple pattens matching will take place. This commit change it into just one single pattern matching by using a `dict *` to store the unique pattern and which clients subscribe to it.
2020-03-31 12:47:14 +02:00
antirez
84dc7c0f65 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
0b7cdb9dfb Fix the propagate Tcl test after module changes. 2020-03-31 12:09:38 +02:00
antirez
55a751597a Modify the propagate unit test to show more cases. 2020-03-31 12:04:06 +02:00
antirez
ab89ab5173 Fix module commands propagation double MULTI bug.
b512cb40 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
80bb739ca5 Fix RM_Call() stale comment due to cut&paste. 2020-03-31 10:27:47 +02:00
antirez
5f94b3007f Merge branch 'unstable' of github.com:/antirez/redis into unstable 2020-03-30 17:29:04 +02:00
antirez
6dceb0140e Precise timeouts: reference client pointer directly. 2020-03-30 15:22:59 +02:00
Guy Benoish
5dba96dc7f 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
John Sully
38d16ea581 Merge branch 'redis_6_merge' of https://github.com/JohnSully/KeyDB into redis_6_merge
Former-commit-id: 95b4f899c5a9218f7ed4cbb81b7f0b894bffe83f
2020-03-30 00:52:43 -04:00
John Sully
549b15d5a2 Merge branch 'unstable' into redis_6_merge
Former-commit-id: 294615531347d7db5d1b0c6a021ac9b05e0bcb48
2020-03-30 00:52:12 -04:00
John Sully
12f76b2b95 Allow active replicas to connect to each other when replica-serve-stale-data is set
Former-commit-id: f2ca2aa1f70956a0309d6a2441417a80383fd717
2020-03-30 00:51:40 -04:00
hwware
2d1a2896f8 add check for not switching between optin optout mode directly 2020-03-29 23:20:54 -04:00
hwware
a5533e0ad8 add check for not providing both optin optout flag 2020-03-29 23:06:50 -04:00
Guy Benoish
5751ba1f2c PERSIST should notify a keyspace event 2020-03-29 17:50:42 +03:00
Salvatore Sanfilippo
2fb4ea5473 Merge pull request #7033 from OMG-By/unstable
fix: dict.c->dictResize()->minimal  type
2020-03-29 16:17:52 +02:00
John Sully
883de95712 Don't send build log to stderr
Former-commit-id: b20bf10fda319389c6e7d06cc7cc6c6b6b4f1c6c
2020-03-28 23:36:57 -04:00
OMG-By
5120922a86 fix: dict.c->dictResize()->minimal type 2020-03-29 00:04:59 +08:00
Salvatore Sanfilippo
9c4afeecb2 Merge pull request #7032 from soloestoy/psync2-meaningful-offset-bugfix
PSYNC2: reset backlog_idx and master_repl_offset correctly
2020-03-28 14:52:11 +01:00
zhaozhao.zz
9a1be653ad PSYNC2: reset backlog_idx and master_repl_offset correctly 2020-03-28 20:59:01 +08:00
John Sully
f8f752f2ab Merge branch 'unstable' into redis_6_merge
Former-commit-id: 208c15bc16aa2a0abf8f8dbcb132316134f0be31
2020-03-27 14:50:37 -04:00
John Sully
4af17a23d8 Raspberry Pi fixes (compile and replication)
Former-commit-id: c3d3c82f3a1751f063a3e77b4bde47f1802a517e
2020-03-27 12:46:25 -04:00
antirez
aa3efaa1d2 timeout.c created: move client timeouts code there. 2020-03-27 16:35:03 +01:00
antirez
ab10e0f2fb 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
2ee65aff6b Precise timeouts: fix comments after functional change. 2020-03-27 16:35:03 +01:00
antirez
0264a78063 Precise timeouts: use only radix tree for timeouts. 2020-03-27 16:35:03 +01:00
antirez
c54576c631 Precise timeouts: fast exit for clientsHandleShortTimeout(). 2020-03-27 16:35:03 +01:00
antirez
36cba9bb8e Precise timeouts: fix bugs in initial implementation. 2020-03-27 16:35:03 +01:00
antirez
f232cb6670 Precise timeouts: working initial implementation. 2020-03-27 16:35:03 +01:00
antirez
86bd36d93a Precise timeouts: refactor unblocking on timeout. 2020-03-27 16:35:02 +01:00
antirez
94901f61b8 PSYNC2: fix backlog_idx when adjusting for meaningful offset
See #7002.
2020-03-27 16:20:02 +01:00
Valentino Geron
53a7041535 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
81c1e22b8d 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
307ff72522 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
John Sully
f4caa84987 Fix merge issues
Former-commit-id: b22d9cc27d0434578891c59825f1c8813a3a9b28
2020-03-25 22:26:27 -04:00
John Sully
9c4b66b9a4 Merge branch 'unstable' into redis_6_merge
Former-commit-id: 908cf5042ebcd7870166bd1a0bb450f37e5f3b4d
2020-03-25 22:12:22 -04:00
John Sully
71fe6f7ba9 Fix issue #143
Former-commit-id: 6ec1641294b23e22a2a5dc5cc6098a02ce234df3
2020-03-25 21:55:31 -04:00
John Sully
b443553a3d Give a better error when handling std::terminate
Former-commit-id: 7b79ec360ba046da6d9dbf3cc731bbdee1458d34
2020-03-25 16:27:24 -04:00
Oran Agra
1ed18d7cd7 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
John Sully
b1c9dcaa05 Merge branch 'unstable' into redis_6_merge
Former-commit-id: 718aee242dd75abd16a5a6a89353d2a35f37b010
2020-03-25 15:47:12 -04:00
John Sully
118bd49a4e Add roundtrip test for subkey expires
Former-commit-id: 56fc6b7deb59cfb3219d65c01c96969d3983e84a
2020-03-25 15:34:30 -04:00
antirez
28d402d31b PSYNC2: meaningful offset test. 2020-03-25 15:55:24 +01:00
antirez
ce73158a9c 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:55:24 +01:00