-
Notifications
You must be signed in to change notification settings - Fork 24.5k
Description
Describe the bug
Calling XAUTOCLAIM in some instances will return nil but still register the pending messages. When I call it with JUSTID and use XREAD, the message still exists.
Edit: misread the message ID, it does not match when using XREAD.
To reproduce
I'm running in to a similar issue with XAUTOCLAIM with Redis 2.6.2 on Aiven.
When we auto claim really old messages, we receive nils:
XXXX.aivencloud.com:23033> xautoclaim XXXX XXXX test 75000 0-0 COUNT 16
1) "1641894502791-3"
2) 1) (nil)
2) (nil)
3) (nil)
4) (nil)
5) (nil)
6) (nil)
7) (nil)
8) (nil)
9) (nil)
10) (nil)
11) (nil)
12) (nil)
13) (nil)
14) (nil)
15) (nil)
16) (nil)
This shows that the messages are pending: (consumers 1 and 2 are live services)
XXXX.aivencloud.com:23033> xinfo consumers XXXX XXXX
1) 1) "name"
2) "XXXX"
3) "pending"
4) (integer) 64
5) "idle"
6) (integer) 22065
2) 1) "name"
2) "XXXX
3) "pending"
4) (integer) 3640
5) "idle"
6) (integer) 9595
3) 1) "name"
2) "test"
3) "pending"
4) (integer) 16
5) "idle"
6) (integer) 1110
When I attempt to read just the ID, it works as expected: Edit: see above
XXXX.aivencloud.com:23033> xautoclaim XXXX XXXX test 75000 0-0 COUNT 16 JUSTID
1) "1641894501535-0"
2) 1) "1641894501383-3"
2) "1641894501383-4"
3) "1641894501383-5"
4) "1641894501383-6"
5) "1641894501383-7"
6) "1641894501383-9"
7) "1641894501383-10"
8) "1641894501383-11"
9) "1641894501383-12"
10) "1641894501383-13"
11) "1641894501383-14"
12) "1641894501384-0"
13) "1641894501385-0"
14) "1641894501385-3"
15) "1641894501385-4"
16) "1641894501391-3"
Then I can still read the message as intended: Edit: see above
XXXX.aivencloud.com:23033> xread count 1 streams XXXX 1641894501383-3
1) 1) "XXXX"
2) 1) 1) "1642684625590-0"
2) 1) "m"
2) "\x12\x12\n\x101\xba.\x0b\xd5\x1fG\xe5\x91\"T`8\x04n\x81\x1a\x14\n\x12\n\x10\xeb\t|\x87K\xfeAa\x9a\xadik\xd2\xffz\xe2\"\x12\n\x10\xe5\x0cf\x0fcyO\xb2\x87\x17\x81\xc5\xf8\x02mx(\xb6\xe5\x88\xbd\xe7/2\"\n\x05mm-gc\x12\x12\n\x10\xf9\x00\xcc\xbb\xb3\x1eM\x1c\x91g\x12\xa2\xa1\x14\xc15\x18\xc8\xe3\x88\xbd\xe7/2*\n\rmm-lobby-stop\x12\x12\n\x10&\xe6\xc3\x17\xe7\xfbJ\x80\x92\t\xbfx\xc3\x0f\xf37\x18\xb6\xe5\x88\xbd\xe7/"
I assume this has something to do with the dead letter mechanism in Redis streams, but there seems to be very sparse literature on how this works under the hood and how to configure it.
Edit: Here's the output of XPENDING:
XXXX.aivencloud.com:23033> xpending XXXX XXXX - + 16
1) 1) "1641890343856-0"
2) "XXXX"
3) (integer) 34775
4) (integer) 9814
2) 1) "1641894501138-0"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
3) 1) "1641894501167-0"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
4) 1) "1641894501167-1"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
5) 1) "1641894501167-2"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
6) 1) "1641894501167-3"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
7) 1) "1641894501168-1"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
8) 1) "1641894501168-2"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
9) 1) "1641894501168-3"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
10) 1) "1641894501168-4"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
11) 1) "1641894501174-0"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
12) 1) "1641894501207-1"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
13) 1) "1641894501207-2"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
14) 1) "1641894501208-4"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
15) 1) "1641894501208-6"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
16) 1) "1641894501208-8"
2) "XXXX"
3) (integer) 34775
4) (integer) 9813
Expected behavior
Should return messages from the PEL without having to use an XREAD workaround.
Additional information
Potentially related to #8924.