Skip to content

reactiveRedisTemplate.opsForHash hanging #3129

Closed as not planned
Closed as not planned
@whojes-toss

Description

@whojes-toss

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:

  1. 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.
    Image

  2. redisSubscription.data had 23 entries left.
    Image

  3. subscriber.delegate had 56 entries
    Image

And in my local, subscrition.request(n) is called sequentially with values of 32, 24, 24.


Here are my assumption of the root cause

  1. io.lettuce.core.RedisPublicher$RedisSubscription has some concurrent issues, so RedisSubscription received last request(24) signal but somewhere blocked.
  2. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    for: external-projectFor an external project and not something we can fix

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions