Description
first of all, i'm not good at english so if something is vague or confusing, let me explain more.
Hi, my production code is stucked for some reason, so I'm investigating. It is really rare situation, and i cannot find reproduce, sorry about that.
so I captured heap dump files and found that one of RedisSubscription
instance is in NO_DEMAND state, doing nothing. (the command was hvals.)
here is my code:
reactiveRedisTemplate.opsForHash<String, Long>().values(key).collectList().awaitSingle()
what i found:
-
redisSubscription.command.output
was empty but the element array size was 79 so i assumed that the hash had 79 elements at that time, and lettuce got them all.
And in my local, subscrition.request(n)
is called sequentially with values of 32, 24, 24.
Here are my assumption of the root cause
io.lettuce.core.RedisPublicher$RedisSubscription
has some concurrent issues, so RedisSubscription received last request(24) signal but somewhere blocked.- flux did not send the last request(24) signal to RedisSubscription.
do you guys ever have similar issues? it would be great if any clues i can refer to.
thank you in advance!
- spring-data-redis: 3.1.2.RELEASE
- Lettuce version(s): 6.2.7.RELEASE
- Redis version: 6.0 cluster