Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CommandDecoder持续报错 #5860

Open
quanchangnai opened this issue May 11, 2024 · 1 comment
Open

CommandDecoder持续报错 #5860

quanchangnai opened this issue May 11, 2024 · 1 comment

Comments

@quanchangnai
Copy link

quanchangnai commented May 11, 2024

在使用RedissonClient.createBatch(BatchOptions.defaults().executionMode(ExecutionMode.REDIS_READ_ATOMIC))执行批量查询时,CommandDecoder的218行代码没有捕获NoClassDefFoundError导致endIndex没有被重置
后续我们通过redifine class修复了NoClassDefFoundError,但可能因为endIndex一直不对导致持续报错:RedisException: ERR EXEC without MULTI 和 KryoException: Encountered unregistered class ID: 121
最后我们通过redifine把ExecutionMode改成IN_MEMORY才不报错了
上述操作都是在不重启进程的情况下完成的

CommandsData commands = (CommandsData) data;
try {
decodeCommandBatch(channel, in, commands);
} catch (Exception e) {
in.readerIndex(endIndex);
sendNext(channel);
commands.getPromise().completeExceptionally(e);
throw e;
}

2024-05-10 08:45:19,371 (ErrorsLoggingHandler.java:47)[redisson-netty-6-5][ERROR][org.redisson.client.handler.ErrorsLoggingHandler] Exception occured. Channel: [id: 0x0d2d2a30, L:/10.148.152.172:51420 - R:10.148.153.40/10.148.153.40:6379]java.lang.NoClassDefFoundError: com/esotericsoftware/minlog/Log
at com.esotericsoftware.kryo.util.Util.isClassAvailable(Util.java:81) ~[kryo-5.5.0.jar:?]
at com.esotericsoftware.kryo.Kryo.(Kryo.java:234) ~[kryo-5.5.0.jar:?]
at com.esotericsoftware.kryo.Kryo.(Kryo.java:168) ~[kryo-5.5.0.jar:?]
at org.redisson.codec.Kryo5Codec.createKryo(Kryo5Codec.java:123) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.codec.Kryo5Codec$1.create(Kryo5Codec.java:103) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.codec.Kryo5Codec$1.create(Kryo5Codec.java:100) ~[redisson-3.23.0.jar:3.23.0]
at com.esotericsoftware.kryo.util.Pool.obtain(Pool.java:80) ~[kryo-5.5.0.jar:?]
at org.redisson.codec.Kryo5Codec$4.decode(Kryo5Codec.java:140) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:393) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decodeList(CommandDecoder.java:434) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:402) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decodeCommandBatch(CommandDecoder.java:278) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decodeCommand(CommandDecoder.java:217) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:144) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:120) ~[redisson-3.23.0.jar:3.23.0]
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)

2024-05-10 18:30:08,343 (RedisOperationUtils.java:247)[globalExecutor-1-10][ERROR][CORE] Failed to get the batch processing result. firstValue=null
java.util.concurrent.ExecutionException: org.redisson.client.RedisException: ERR EXEC without MULTI. channel: [id: 0x3b25640d, L:/10.148.152.172:38038 - R:10.148.153.40/10.148.153.40:6379] command: (EXEC), promise: java.util.concurrent.CompletableFuture@4f8e8c7c[Not completed, 1 dependents], params: []
at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395) ~[?:?]
at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999) ~[?:?]
at org.jow.common.support.redis.utils.RedisOperationUtils.lambda$conversionBatchResults$10(RedisOperationUtils.java:244) ~[common.jar:?]
at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072) ~[?:?]
at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478) ~[?:?]
at org.jow.common.support.thread.FlexibleScheduledThreadPoolExecutor.lambda$schedule$0(FlexibleScheduledThreadPoolExecutor.java:34) ~[common.jar:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at org.jow.common.support.thread.ExecutorPort$1.lambda$newThread$0(ExecutorPort.java:60) ~[common.jar:?]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.94.Final.jar:4.1.94.Final]
at java.lang.Thread.run(Thread.java:834) ~[?:?]
Caused by: org.redisson.client.RedisException: ERR EXEC without MULTI. channel: [id: 0x3b25640d, L:/10.148.152.172:38038 - R:10.148.153.40/10.148.153.40:6379] command: (EXEC), promise: java.util.concurrent.CompletableFuture@4f8e8c7c[Not completed, 1 dependents], params: []
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:380) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decodeCommandBatch(CommandDecoder.java:278) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decodeCommand(CommandDecoder.java:217) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:144) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:120) ~[redisson-3.23.0.jar:3.23.0]
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529) ~[netty-codec-4.1.94.Final.jar:4.1.94.Final]

2024-05-10 18:30:08,889 (FlexibleCompletableFuture.java:287)[redisson-netty-6-10][ERROR][CORE] The multi-async process completes unexpectedly.
java.util.concurrent.CompletionException: com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 121
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331) ~[?:?]
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:346) ~[?:?]
at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1063) ~[?:?]
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) ~[?:?]
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088) ~[?:?]
at org.redisson.command.RedisQueuedBatchExecutor.handleError(RedisQueuedBatchExecutor.java:124) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.command.RedisExecutor.handleResult(RedisExecutor.java:571) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.command.RedisExecutor.checkAttemptPromise(RedisExecutor.java:559) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.command.RedisExecutor.lambda$execute$5(RedisExecutor.java:196) ~[redisson-3.23.0.jar:3.23.0]
at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859) ~[?:?]
at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837) ~[?:?]
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) ~[?:?]
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088) ~[?:?]
at org.redisson.client.protocol.CommandData.tryFailure(CommandData.java:87) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decodeCommandBatch(CommandDecoder.java:304) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decodeCommand(CommandDecoder.java:217) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:144) ~[redisson-3.23.0.jar:3.23.0]
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:120) ~[redisson-3.23.0.jar:3.23.0]
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529) ~[netty-codec-4.1.94.Final.jar:4.1.94.Final]
at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:366) ~[netty-codec-4.1.94.Final.jar:4.1.94.Final]

Redisson version
3.23.0

@quanchangnai quanchangnai changed the title CommandDecoder问题 CommandDecoder持续报错 May 11, 2024
@ling0900
Copy link

有没有仓库demo,我想调试下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants