use gateway + spring-data-redis + lettuce,but something throw io.lettuce.core.output.ValueOutput does not support set(long)
zafir-zhong opened this issue · 1 comments
zafir-zhong commented
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, or it disappears after repackaging.
i use json 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.
spring-cloud-starter-gateway:3.1.9
lettuce: 6.1.10.RELEASE
spring-data-redis: 2.7.18
convertAndSend
data:
{"apps":[“D3sX4"],"status": 2}
listen:
reactiveRedisTemplate.listenToChannel(Constant.Sentinel.RULE_SYNC_KEY).flatMap(data -> {});
error log:
2024-04-23 18:06:39.741|ERROR |9573|lettuce-epollEventLoop-5-1||Operator called default onErrorDropped
reactor.core.Exceptions$ErrorCallbackNotImplemented: java.lang.UnsupportedOperationException: io.lettuce.core.output.ValueOutput does not support set(long)
Caused by: java.lang.UnsupportedOperationException: io.lettuce.core.output.ValueOutput does not support set(long)
at io.lettuce.core.output.CommandOutput.set(CommandOutput.java:107) ~[lettuce-core-6.1.10.RELEASE.jar:6.1.10.RELEASE]
at io.lettuce.core.protocol.RedisStateMachine.safeSet(RedisStateMachine.java:778) ~[lettuce-core-6.1.10.RELEASE.jar:6.1.10.RELEASE]
at io.lettuce.core.protocol.RedisStateMachine.handleInteger(RedisStateMachine.java:404) ~[lettuce-core-6.1.10.RELEASE.jar:6.1.10.RELEASE]
at io.lettuce.core.protocol.RedisStateMachine$State$Type.handle(RedisStateMachine.java:206) ~[lettuce-core-6.1.10.RELEASE.jar:6.1.10.RELEASE]
at io.lettuce.core.protocol.RedisStateMachine.doDecode(RedisStateMachine.java:334) ~[lettuce-core-6.1.10.RELEASE.jar:6.1.10.RELEASE]
at io.lettuce.core.protocol.RedisStateMachine.decode(RedisStateMachine.java:295) ~[lettuce-core-6.1.10.RELEASE.jar:6.1.10.RELEASE]
at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:842) ~[lettuce-core-6.1.10.RELEASE.jar:6.1.10.RELEASE]
at io.lettuce.core.protocol.CommandHandler.decode0(CommandHandler.java:793) ~[lettuce-core-6.1.10.RELEASE.jar:6.1.10.RELEASE]
at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:767) ~[lettuce-core-6.1.10.RELEASE.jar:6.1.10.RELEASE]
at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:659) ~[lettuce-core-6.1.10.RELEASE.jar:6.1.10.RELEASE]
at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:599) ~[lettuce-core-6.1.10.RELEASE.jar:6.1.10.RELEASE]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[netty-transport-4.1.108.Final.jar:4.1.108.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.108.Final.jar:4.1.108.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.108.Final.jar:4.1.108.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.108.Final.jar:4.1.108.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[netty-transport-4.1.108.Final.jar:4.1.108.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.108.Final.jar:4.1.108.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.108.Final.jar:4.1.108.Final]
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:801) ~[netty-transport-classes-epoll-4.1.108.Final.jar:4.1.108.Final]
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509) ~[netty-transport-classes-epoll-4.1.108.Final.jar:4.1.108.Final]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407) ~[netty-transport-classes-epoll-4.1.108.Final.jar:4.1.108.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.108.Final.jar:4.1.108.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.108.Final.jar:4.1.108.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.108.Final.jar:4.1.108.Final]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
arthas data (input@ValueOutput
respnull
and Thread@StackTraceElement
)
method=io.lettuce.core.protocol.RedisStateMachine.safeSet location=AtExit
ts=2024-05-24 17:17:38; [cost=0.899899ms] result=@ArrayList[
@ValueOutput[
codec=@ByteBufferCodec[
INSTANCE=@ByteBufferCodec[
INSTANCE=@ByteBufferCodec[INSTANCE],
$VALUES=@ByteBufferCodec[][isEmpty=false;size=1],
name=@String[INSTANCE],
ordinal=@Integer[0],
],
$VALUES=@ByteBufferCodec[][
@ByteBufferCodec[INSTANCE],
],
name=@String[INSTANCE],
ordinal=@Integer[0],
],
output=null,
error=@String[io.lettuce.core.output.ValueOutput does not support set(long)],
],
null,
@StackTraceElement[][
@StackTraceElement[
declaringClass=@String[java.lang.Thread],
methodName=@String[getStackTrace],
fileName=@String[Thread.java],
lineNumber=@Integer[1559],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[sun.reflect.NativeMethodAccessorImpl],
methodName=@String[invoke0],
fileName=@String[NativeMethodAccessorImpl.java],
lineNumber=@Integer[-2],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[sun.reflect.NativeMethodAccessorImpl],
methodName=@String[invoke],
fileName=@String[NativeMethodAccessorImpl.java],
lineNumber=@Integer[62],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[sun.reflect.DelegatingMethodAccessorImpl],
methodName=@String[invoke],
fileName=@String[DelegatingMethodAccessorImpl.java],
lineNumber=@Integer[43],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[java.lang.reflect.Method],
methodName=@String[invoke],
fileName=@String[Method.java],
lineNumber=@Integer[498],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.OgnlRuntime],
methodName=@String[invokeMethod],
fileName=@String[OgnlRuntime.java],
lineNumber=@Integer[899],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.OgnlRuntime],
methodName=@String[callAppropriateMethod],
fileName=@String[OgnlRuntime.java],
lineNumber=@Integer[1544],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.ObjectMethodAccessor],
methodName=@String[callMethod],
fileName=@String[ObjectMethodAccessor.java],
lineNumber=@Integer[68],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.OgnlRuntime],
methodName=@String[callMethod],
fileName=@String[OgnlRuntime.java],
lineNumber=@Integer[1620],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.ASTMethod],
methodName=@String[getValueBody],
fileName=@String[ASTMethod.java],
lineNumber=@Integer[91],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.SimpleNode],
methodName=@String[evaluateGetValueBody],
fileName=@String[SimpleNode.java],
lineNumber=@Integer[212],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.SimpleNode],
methodName=@String[getValue],
fileName=@String[SimpleNode.java],
lineNumber=@Integer[258],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.ASTChain],
methodName=@String[getValueBody],
fileName=@String[ASTChain.java],
lineNumber=@Integer[141],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.SimpleNode],
methodName=@String[evaluateGetValueBody],
fileName=@String[SimpleNode.java],
lineNumber=@Integer[212],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.SimpleNode],
methodName=@String[getValue],
fileName=@String[SimpleNode.java],
lineNumber=@Integer[258],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.ASTList],
methodName=@String[getValueBody],
fileName=@String[ASTList.java],
lineNumber=@Integer[60],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.SimpleNode],
methodName=@String[evaluateGetValueBody],
fileName=@String[SimpleNode.java],
lineNumber=@Integer[212],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.SimpleNode],
methodName=@String[getValue],
fileName=@String[SimpleNode.java],
lineNumber=@Integer[258],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.Ognl],
methodName=@String[getValue],
fileName=@String[Ognl.java],
lineNumber=@Integer[470],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.Ognl],
methodName=@String[getValue],
fileName=@String[Ognl.java],
lineNumber=@Integer[572],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[ognl.Ognl],
methodName=@String[getValue],
fileName=@String[Ognl.java],
lineNumber=@Integer[542],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[com.taobao.arthas.core.command.express.OgnlExpress],
methodName=@String[get],
fileName=@String[OgnlExpress.java],
lineNumber=@Integer[40],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[com.taobao.arthas.core.advisor.AdviceListenerAdapter],
methodName=@String[getExpressionResult],
fileName=@String[AdviceListenerAdapter.java],
lineNumber=@Integer[123],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[com.taobao.arthas.core.command.monitor200.WatchAdviceListener],
methodName=@String[watching],
fileName=@String[WatchAdviceListener.java],
lineNumber=@Integer[87],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[com.taobao.arthas.core.command.monitor200.WatchAdviceListener],
methodName=@String[finishing],
fileName=@String[WatchAdviceListener.java],
lineNumber=@Integer[71],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[com.taobao.arthas.core.command.monitor200.WatchAdviceListener],
methodName=@String[afterReturning],
fileName=@String[WatchAdviceListener.java],
lineNumber=@Integer[55],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[com.taobao.arthas.core.advisor.AdviceListenerAdapter],
methodName=@String[afterReturning],
fileName=@String[AdviceListenerAdapter.java],
lineNumber=@Integer[57],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[com.taobao.arthas.core.advisor.SpyImpl],
methodName=@String[atExit],
fileName=@String[SpyImpl.java],
lineNumber=@Integer[67],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[java.arthas.SpyAPI],
methodName=@String[atExit],
fileName=@String[SpyAPI.java],
lineNumber=@Integer[64],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.lettuce.core.protocol.RedisStateMachine],
methodName=@String[safeSet],
fileName=@String[RedisStateMachine.java],
lineNumber=@Integer[782],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.lettuce.core.protocol.RedisStateMachine],
methodName=@String[handleInteger],
fileName=@String[RedisStateMachine.java],
lineNumber=@Integer[404],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.lettuce.core.protocol.RedisStateMachine$State$Type],
methodName=@String[handle],
fileName=@String[RedisStateMachine.java],
lineNumber=@Integer[206],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.lettuce.core.protocol.RedisStateMachine],
methodName=@String[doDecode],
fileName=@String[RedisStateMachine.java],
lineNumber=@Integer[334],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.lettuce.core.protocol.RedisStateMachine],
methodName=@String[decode],
fileName=@String[RedisStateMachine.java],
lineNumber=@Integer[295],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.lettuce.core.protocol.CommandHandler],
methodName=@String[decode],
fileName=@String[CommandHandler.java],
lineNumber=@Integer[842],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.lettuce.core.protocol.CommandHandler],
methodName=@String[decode0],
fileName=@String[CommandHandler.java],
lineNumber=@Integer[793],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.lettuce.core.protocol.CommandHandler],
methodName=@String[decode],
fileName=@String[CommandHandler.java],
lineNumber=@Integer[767],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.lettuce.core.protocol.CommandHandler],
methodName=@String[decode],
fileName=@String[CommandHandler.java],
lineNumber=@Integer[659],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.lettuce.core.protocol.CommandHandler],
methodName=@String[channelRead],
fileName=@String[CommandHandler.java],
lineNumber=@Integer[599],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.netty.channel.AbstractChannelHandlerContext],
methodName=@String[invokeChannelRead],
fileName=@String[AbstractChannelHandlerContext.java],
lineNumber=@Integer[442],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.netty.channel.AbstractChannelHandlerContext],
methodName=@String[invokeChannelRead],
fileName=@String[AbstractChannelHandlerContext.java],
lineNumber=@Integer[420],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.netty.channel.AbstractChannelHandlerContext],
methodName=@String[fireChannelRead],
fileName=@String[AbstractChannelHandlerContext.java],
lineNumber=@Integer[412],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.netty.channel.DefaultChannelPipeline$HeadContext],
methodName=@String[channelRead],
fileName=@String[DefaultChannelPipeline.java],
lineNumber=@Integer[1410],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.netty.channel.AbstractChannelHandlerContext],
methodName=@String[invokeChannelRead],
fileName=@String[AbstractChannelHandlerContext.java],
lineNumber=@Integer[440],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.netty.channel.AbstractChannelHandlerContext],
methodName=@String[invokeChannelRead],
fileName=@String[AbstractChannelHandlerContext.java],
lineNumber=@Integer[420],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.netty.channel.DefaultChannelPipeline],
methodName=@String[fireChannelRead],
fileName=@String[DefaultChannelPipeline.java],
lineNumber=@Integer[919],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe],
methodName=@String[epollInReady],
fileName=@String[AbstractEpollStreamChannel.java],
lineNumber=@Integer[801],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.netty.channel.epoll.EpollEventLoop],
methodName=@String[processReady],
fileName=@String[EpollEventLoop.java],
lineNumber=@Integer[509],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.netty.channel.epoll.EpollEventLoop],
methodName=@String[run],
fileName=@String[EpollEventLoop.java],
lineNumber=@Integer[407],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.netty.util.concurrent.SingleThreadEventExecutor$4],
methodName=@String[run],
fileName=@String[SingleThreadEventExecutor.java],
lineNumber=@Integer[997],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.netty.util.internal.ThreadExecutorMap$2],
methodName=@String[run],
fileName=@String[ThreadExecutorMap.java],
lineNumber=@Integer[74],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[io.netty.util.concurrent.FastThreadLocalRunnable],
methodName=@String[run],
fileName=@String[FastThreadLocalRunnable.java],
lineNumber=@Integer[30],
serialVersionUID=@Long[6992337162326171013],
],
@StackTraceElement[
declaringClass=@String[java.lang.Thread],
methodName=@String[run],
fileName=@String[Thread.java],
lineNumber=@Integer[748],
serialVersionUID=@Long[6992337162326171013],
],
],
]
mp911de commented
Closing as duplicate of redis/lettuce#2864