Open zafir-zhong opened 5 months ago
Hey @zafir-zhong , are you sure this issue does not belong to the spring-data-redis? From the information you've provided it is hard to understand what is going wrong. Could you provide a minimal sample so we can investigate further?
I am unable to reproduce this issue stably, but it always occurs sporadically.And, in the exception stack, only the relevant information of Lettuce can be seen.
it happen when gateway listen a message {"apps":[“D3sX4"],"status": 2}
from redis,and causing the service to be unable to read data from Redis
Can you provide some suggestions on when Lettuce may throw this exception? Now all I know is that the service malfunctioned after receiving a Redis message
Can you provide some suggestions on when Lettuce may throw this exception? Now all I know is that the service malfunctioned after receiving a Redis message
This message means that the Lettuce driver is not set up to process the message that was returned. Each command has an implementation of the CommandOutput
associated to it, to help parse the response from the server. In your case this is a ValueOutput
. The ValueOutput
does not handle long
values and thus the processing fails.
Now why we are receiving the wrong value is a question I can't answer.
What type of serialization are you using for your ReactiveRedisTemplate? Are messages of mixed type expected on this channel? What is the purpose of this code?
I am unable to reproduce this issue stably, but it always occurs sporadically.And, in the exception stack, only the relevant information of Lettuce can be seen. it happen when gateway listen a message
{"apps":[“D3sX4"],"status": 2}
from redis,and causing the service to be unable to read data from Redis
Have you asked your question in the spring-data-redis ?
Can you provide some suggestions on when Lettuce may throw this exception? Now all I know is that the service malfunctioned after receiving a Redis message
This message means that the Lettuce driver is not set up to process the message that was returned. Each command has an implementation of the
CommandOutput
associated to it, to help parse the response from the server. In your case this is aValueOutput
. TheValueOutput
does not handlelong
values and thus the processing fails.Now why we are receiving the wrong value is a question I can't answer.
What type of serialization are you using for your ReactiveRedisTemplate? Are messages of mixed type expected on this channel? What is the purpose of this code?
use jason serialization I didn't find any of my own code in the exception message, so I can't actually confirm which line of code caused it
I am unable to reproduce this issue stably, but it always occurs sporadically.And, in the exception stack, only the relevant information of Lettuce can be seen. it happen when gateway listen a message
{"apps":[“D3sX4"],"status": 2}
from redis,and causing the service to be unable to read data from RedisHave you asked your question in the spring-data-redis ?
i try it now.
Looks like a variant of #2175
Looks like a variant of #2175
Do you think it is more likely a problem of the driver or the way spring-data-redis uses it? I am trying to see a pattern myselft, but I see we also have instances of this issue manifested when the driver is used standalone.
Impossible to say without a reproducer. The listenToChannel(…)
method effectively SUBSCRIBE
s to a channel with a PubSubOutput
. Given the exception above that mentions ValueOutput
, there's a gap that only a reproducer can describe.
I have deployed multiple gateway services with the same code. However, in some instances of the service, a failure occurs after listening to specific Redis messages. The failure disappears after restarting the service, but it reappears after repackaging.
convertAndSend
data:listen:
error log:
arthas data (input
@ValueOutput
respnull
and Thread@StackTraceElement
)