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 https://github.com/redis/redis/issues/8924.
Comment From: guybe7
@rh2048 please read https://github.com/redis/redis/issues/7021#issuecomment-1027939792