135 Commits

Author SHA1 Message Date
zhaozhao.zz
325114d59e Streams: show last id for streams and groups 2018-07-16 13:24:54 +08:00
antirez
3780c517c5 Streams: when re-delivering because of SETID, reset deliveries counter.
We don't want to increment the deliveries here, because the sysadmin
reset the consumer group so the desire is likely to restart processing,
and having the PEL polluted with old information is not useful but
probably confusing.

Related to #5111.
2018-07-12 13:19:39 +02:00
antirez
48ca8fa170 Simplify duplicated NACK #5112 fix.
We don't really need to distinguish between the case the consumer is the
same or is a different one.
2018-07-12 13:15:54 +02:00
Salvatore Sanfilippo
e17cd8e71c Merge pull request #5112 from 0xtonyxia/fix-xreadgroup-crash-after-setid
Streams: fix xreadgroup crash after xgroup SETID is sent.
2018-07-12 13:04:22 +02:00
antirez
c55bce5022 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2018-07-10 12:06:44 +02:00
antirez
7ab0605a9e Streams: fix new XREADGROUP sync logic. 2018-07-10 12:02:03 +02:00
antirez
79ffb03598 Streams: make blocking for > a truly special case.
To simplify the semantics of blocking for a group, this commit changes
the implementation to better match the description we provide of
conusmer groups: blocking for > will make the consumer waiting for new
elements in the group. However blocking for any other ID will always
serve the local history of the consumer.

However it must be noted that the > ID is actually an alias for the
special ID ms/seq of UINT64_MAX,UINT64_MAX.
2018-07-10 11:34:17 +02:00
dejun.xdj
0ef85da865 Streams: fix xreadgroup crash after xgroup SETID is sent.
For issue #5111.
2018-07-10 16:26:13 +08:00
dejun.xdj
07ef48956d Bugfix: PEL is incorrect when consumer is blocked using xreadgroup with NOACK option.
Save NOACK option into client.blockingState structure.
2018-07-09 13:40:29 +02:00
Jack Drogon
bae1d36e5d Fix typo 2018-07-03 18:19:46 +02:00
antirez
938d879c2a addReplySubSyntaxError() renamed to addReplySubcommandSyntaxError(). 2018-07-02 18:49:34 +02:00
Salvatore Sanfilippo
c44be0ab9b Merge pull request #4998 from itamarhaber/module_command_help
Module command help
2018-07-02 18:46:56 +02:00
Mustafa Paltun
d0a9dae861 Update t_stream.c 2018-06-27 16:35:30 +03:00
antirez
26ee2c4714 Streams: Change XADD MAXLEN handling of values <= 0.
Now a MAXLEN of 0 really does what it means: it will create a zero
entries stream. This is useful in order to make sure that the behavior
is identical to XTRIM, that must be able to reduce the stream to zero
elements when MAXLEN is given.

Also now MAXLEN with a count < 0 will return an error.
2018-06-18 10:05:21 +02:00
antirez
be1fcf16ae XADD MAXLEN should return an error for values < 0. 2018-06-17 10:44:01 +02:00
antirez
e9685766d7 Streams: generate a few additional events.
Currently it does not look it's sensible to generate events for streams
consumer groups modification, being them metadata, however at least for
key-level events, like the creation or removal of a consumer group, I
added a few events here and there. Later we can evaluate if it makes
sense to add more. From the POV instead of WAIT (in Redis transaciton)
and signaling the key as modified, it looks like that the transaction
should not fail when a stream is modified, so no calls are made in
consumer groups related functions to signalModifiedKey().
2018-06-12 18:11:15 +02:00
antirez
0bab38c5c4 Streams: improve type correctness in t_stream.c. 2018-06-12 14:12:53 +02:00
Itamar Haber
4ae6aeefa4 Applies addReplySubSyntaxError to stream commands 2018-06-12 14:52:50 +03:00
antirez
28cd9e9c1f Fix XGROUP help missing space. 2018-06-12 13:20:46 +02:00
antirez
2075172bec Streams: fix backward iteration when entry is not flagged SAMEFIELD.
See issue #5006. The comment in the code was also wrong and
was rectified as well.
2018-06-12 10:22:49 +02:00
Salvatore Sanfilippo
877ef820f7 Merge pull request #5007 from leonchen83/patch-2
fix typo issue #5005
2018-06-12 09:28:26 +02:00
antirez
524107d18c Streams: increment dirty counter for XGROUP SETID/DESTROY.
See issue #5005 comments.
2018-06-12 09:27:40 +02:00
Baoyi Chen
243b3d262a fix typo
fix [#5005](https://github.com/antirez/redis/issues/5005)
2018-06-12 08:52:18 +08:00
Salvatore Sanfilippo
44a7d836b1 Merge pull request #5002 from soloestoy/streams-read-or-write
Streams: lookupKey[Read->Write]OrReply in xdel and xtrim
2018-06-11 16:33:10 +02:00
Salvatore Sanfilippo
9fb3560b67 Merge pull request #5003 from soloestoy/streams-checkType
Streams: checkType for xread & xinfo
2018-06-11 16:32:00 +02:00
zhaozhao.zz
d6e8bdb43e Streams: checkType for xread & xinfo 2018-06-11 01:17:52 +08:00
zhaozhao.zz
c975263fd7 Streams: lookupKey[Read->Write]OrReply in xdel and xtrim 2018-06-11 00:14:17 +08:00
michael-grunder
763bf24221 Abort in XGROUP if the key is not a stream 2018-06-10 08:55:58 -07:00
Salvatore Sanfilippo
9f5a954549 Merge pull request #4977 from michael-grunder/xpending-early-return
Return early in XPENDING if sent a nonexistent consumer group.
2018-06-07 18:49:09 +02:00
antirez
482a5dcefa Typo: entires -> entries in several places. 2018-06-07 14:36:56 +02:00
antirez
7e9ec104dd Streams: max node limits only checked if non zero. 2018-06-07 14:30:25 +02:00
antirez
cd2a3ea8f1 Streams: use non static macro node limits.
Also add the concept of size/items limit, instead of just having as
limit the number of bytes.
2018-06-07 14:24:49 +02:00
antirez
af566a2118 Fix streamIteratorRemoveEntry() to update elements count.
Close #4989.
2018-06-06 11:40:22 +02:00
antirez
a1e29c6531 Remove XINFO <key> special form.
As observed by Michael Grunder this usage while practical is
inconsistent because for instance it does not work against a key called
HELP. Removed.
2018-06-05 16:34:34 +02:00
antirez
ca42e42860 XGROUP SETID implemented + consumer groups core fixes.
Now that we have SETID, the inetrnals of consumer groups should be able
to handle the case of the same message delivered multiple times just
as a side effect of calling XREADGROUP. Normally this should never
happen but if the admin manually "XGROUP SETID mykey mygroup 0",
messages will get re-delivered to clients waiting for the ">" special
ID. The consumer groups internals were not able to handle the case of a
message re-delivered in this circumstances that was already assigned to
another owner.
2018-06-04 17:28:03 +02:00
antirez
0dbc74bd00 XGROUP DESTROY implemented. 2018-06-04 12:58:26 +02:00
michael-grunder
aa71784552 Return early in XPENDING if sent a nonexistent consumer group. 2018-06-02 18:22:20 -07:00
antirez
71f1556f0e Merge branch 'unstable' of github.com:/antirez/redis into unstable 2018-05-29 12:41:07 +02:00
antirez
a40bd92df3 Streams: fix comments referring to old ID format. 2018-05-25 17:25:19 +02:00
zhaozhao.zz
04960217ad avoid warning in t_stream.c 2018-05-25 22:49:49 +08:00
antirez
d288a836f2 Simplify XADD ID syntax error code path,. 2018-05-25 16:29:37 +02:00
Salvatore Sanfilippo
af6f8eff4a Merge pull request #4832 from 0xtonyxia/fix-xadd-ID-parse
Bugfix: xadd command ID parse
2018-05-25 16:27:21 +02:00
antirez
f27e9db3a4 Avoid warning by explicitly initializing var to NULL. 2018-05-25 16:19:14 +02:00
antirez
f2bd31a1c4 Explicitly cast void pointers to char pointers for printf style logging. 2018-05-25 16:15:59 +02:00
Salvatore Sanfilippo
f30ecc4de2 Merge pull request #4831 from 0xtonyxia/fix-xadd-arity-check
Bugfix: xadd comand <field,value> arity check
2018-05-24 16:07:19 +02:00
antirez
742bf9dfca Streams: XTRIM command added. 2018-04-19 16:25:29 +02:00
antirez
82f250cace Streams: XADD, handle signaling of write in different ways. 2018-04-19 16:11:43 +02:00
antirez
74eb5443ce Streams: XDEL command. 2018-04-18 13:12:09 +02:00
antirez
2602e3c9eb Streams: higher level "delete by ID" API for streams. 2018-04-17 17:55:56 +02:00
antirez
a7f0b02fd2 Streams: iterator entry deletion abilities. 2018-04-17 17:18:00 +02:00