spring-projects/spring-data-redis

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

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.

link lettuce issue

spring-cloud-starter-gateway:3.1.9
lettuce: 6.1.10.RELEASE
spring-data-redis: 2.7.18

convertAndSenddata:

{"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],
        ],
    ],
]

Closing as duplicate of redis/lettuce#2864