08ae522ff9
Streams: propagate lastid in XCLAIM when it has effect
2018-10-11 21:44:20 +08:00
183ef7ae9b
Streams: XCLAIM ignore minidle if NACK is created by FORCE
...
Because the NACK->consumer is NULL, if idletime < minidle
the NACK does not belong to any consumer, then redis will crash
in XPENDING.
2018-10-11 21:20:49 +08:00
4dc48a0d11
Streams: bugfix XCLAIM should propagate group name not consumer name
2018-10-11 21:12:09 +08:00
c9d9ae7baa
Fix propagation of consumer groups last ID.
...
Issue #5433 .
2018-10-10 12:51:02 +02:00
480e299436
Streams: rewrite id in XSTREAM CREATE *
2018-10-09 16:22:30 +08:00
ec511fa709
Streams: add a new command XTREAM
...
XSTREAM CREATE <key> <id or *> -- Create a new empty stream.
XSTREAM SETID <key> <id or $> -- Set the current stream ID.
2018-10-09 13:11:04 +08:00
3e78344d87
Refactoring of XADD / XTRIM MAXLEN rewriting.
...
See #5141 .
2018-10-08 12:05:22 +02:00
e5f1de1448
Merge pull request #5141 from soloestoy/fix-xtrim-inconsistency
...
Fix XTRIM and XADD with MAXLEN inconsistency
2018-10-08 12:00:00 +02:00
68c0e6e331
xclaimCommand(): fix comment typos.
2018-10-04 17:34:06 +02:00
32e0d2376f
streamAppendItem(): Update the radix tree pointer only if changed.
2018-10-02 19:45:33 +02:00
c7c3b23787
streamIteratorRemoveEntry(): set back lp only if pointer changed.
...
Most of the times the pointer will remain the same since integers of
similar size don't take more space in listpacks.
Related to #5210 .
2018-10-02 16:20:40 +02:00
9fe7cd8f14
Merge pull request #5210 from soloestoy/raxinsert-in-xdel
...
Streams: update listpack with new pointer in XDEL
2018-10-02 16:18:55 +02:00
9e0e5ccbf4
Fix XINFO comment for consistency.
2018-10-01 11:38:58 +02:00
8b87876094
add missing argument to function doc
2018-09-21 02:46:31 +03:00
c1e9186f06
#5299 Fix blocking XREAD for streams that ran dry
...
The conclusion, that a xread request can be answered syncronously in
case that the stream's last_id is larger than the passed last-received-id
parameter, assumes, that there must be entries present, which could be
returned immediately.
This assumption fails for empty streams that actually contained some
entries which got removed by xdel, ... .
As result, the client is answered synchronously with an empty result,
instead of blocking for new entries to arrive.
An additional check for a non-empty stream is required.
2018-09-04 13:13:36 +02:00
a3a1460525
Streams: update listpack with new pointer in XDEL
2018-08-04 01:06:53 +08:00
39c70e728b
Merge pull request #5146 from 0xtonyxia/fix-xclaim-id-parse
...
Streams: ID of xclaim command should start from the sixth argument.
2018-08-03 13:45:27 +02:00
fe56c67405
Fix stream command paras
2018-08-03 19:01:15 +08:00
9042d1c249
Streams: propagate specified MAXLEN instead of approximated
...
Slaves and rebooting redis may have different radix tree struct,
by different stream* config options. So propagating approximated
MAXLEN to AOF/slaves may lead to date inconsistency.
2018-08-01 10:34:12 +08:00
14d6318b32
Streams: reset approx_maxlen in every maxlen loop
2018-08-01 10:31:27 +08:00
da6b7516f1
Streams: XTRIM will return an error if MAXLEN with a count < 0
2018-08-01 10:31:27 +08:00
20c6a7fe2c
Streams: propagate original MAXLEN argument in XADD context
...
If we rewrite the MAXLEN argument as zero when no trimming
was performed, date between master and slave and aof will
be inconsistent, because `xtrim maxlen 0` means delete all
entries in stream.
2018-08-01 10:31:27 +08:00
2f2987ffc5
Streams IDs parsing refactoring.
...
Related to #5184 .
2018-07-31 18:08:52 +02:00
6491717c88
Streams: rearrange the usage of '-' and '+' IDs in stream commands.
2018-07-30 21:33:01 +08:00
d6f5ec6f09
Streams: add mmid_supp argument in streamParseIDOrReply().
...
If 'mmid_supp' is set to 0, "-" and "+" will be
treated as an invalid ID.
2018-07-30 21:32:07 +08:00
73cbc33a0a
Merge pull request #5133 from soloestoy/fix-xdel-memory-leak
...
Streams: fix xdel memory leak
2018-07-24 18:57:05 +02:00
eb0e5fe4e3
Streams: fix xdel memory leak
2018-07-25 00:06:27 +08:00
8513f31be0
Streams: refactoring of next entry seek in the iterator.
...
After #5161 the code could be made a bit more obvious for newcomers.
2018-07-24 11:07:27 +02:00
9674ede85a
Streams: skip master fileds only when we are going forward in streamIteratorGetID
2018-07-22 17:52:09 +08:00
de5ca516ae
Streams: ID of xclaim command starts from the sixth argument.
2018-07-19 20:48:08 +08:00
6201f7b4e0
Streams: better error when $ is given with XREADGROUP.
2018-07-17 17:54:10 +02:00
4bff45c7a6
Merge pull request #5136 from 0xtonyxia/fix-xread-id-parse
...
Fix xreadgroup with '$' ID.
2018-07-17 17:50:31 +02:00
846cf12ae5
Streams: remove meaningless if condition.
...
It's already checked if xreadgroup is set and groupname is NULL.
2018-07-17 18:23:47 +08:00
6501b6bb6d
Streams: return an error message if using xreadgroup with '$' ID.
...
Redis will always return an empty result when '$' ID is specified
with xreadgroup command, it's meaningless.
2018-07-17 18:19:10 +08:00
9fbd49bbaf
Merge pull request #5113 from 0xtonyxia/using-compare-func-instead
...
Streams: using streamCompareID() instead of direct compare.
2018-07-16 18:34:35 +02:00
73306c6fed
Streams: correctly propagate xdel if needed
2018-07-16 20:48:07 +08:00
103c5a1a3c
Add a few comments to streamIteratorRemoveEntry().
2018-07-16 12:41:55 +02:00
a317f55d25
Merge pull request #5131 from soloestoy/optimize-xdel
...
Streams: free lp if all elements are deleted
2018-07-16 12:39:38 +02:00
185e0d9cd8
Modify XINFO field from last-id to last-generated-id.
...
Related to #5129 .
2018-07-16 12:25:26 +02:00
c9324f81a2
Streams: free lp if all elements are deleted
2018-07-16 15:57:41 +08:00
b4ba5ac840
Streams: show last id for streams and groups
2018-07-16 13:24:54 +08:00
0484dbcf68
Streams: using streamCompareID() instead of direct compare.
2018-07-14 20:34:06 +08:00
b6260a0270
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
a7c180e559
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
bf4def0fbc
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
0420c3276f
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-07-10 12:06:44 +02:00
a8c1bb310e
Streams: fix new XREADGROUP sync logic.
2018-07-10 12:02:03 +02:00
1a02b5f6ee
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
3f8a3efe5f
Streams: fix xreadgroup crash after xgroup SETID is sent.
...
For issue #5111 .
2018-07-10 16:26:13 +08:00
61f12973f7
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