Skip to content

Deleting a stream while blocking with XREADGROUP #6887

@guybe7

Description

@guybe7

scenario: client A is blocking on a stream with XREADGROUP:

127.0.0.1:6379> XADD x * f v
"1581590417017-0"
127.0.0.1:6379> XGROUP create x grp $
OK
127.0.0.1:6379> XREADGROUP group grp con block 0 streams x >

after client A is blocked, client B deletes the stream:

127.0.0.1:6379> DEL x
(integer) 1
127.0.0.1:6379> 

i would expect that in that very moment client A will be unblocked with NOGROUP the consumer group this client was blocked on no longer exists (because that DEL deleted the stream along with all the groups it had) but it remains blocked. the only way to unblock it is to revive the stream:

client B:

127.0.0.1:6379> XADD x * f v
"1581590682436-0"
127.0.0.1:6379> 

client A:

127.0.0.1:6379> XREADGROUP group grp con block 0 streams x >
(error) NOGROUP the consumer group this client was blocked on no longer exists
(219.57s)
127.0.0.1:6379> 

i'm not sure if this is by design (maybe we don't want to signalKeyAsReady when a stream is deleted? a bit counter-intuitive) or a bug (current behavior does seem a bit weird)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions