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

Closed
quanchangnai opened this issue May 11, 2024 · 3 comments
Closed

CommandDecoder持续报错 #5860

quanchangnai opened this issue May 11, 2024 · 3 comments

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,我想调试下

@quanchangnai
Copy link
Author

quanchangnai commented May 29, 2024

@ling0900
没有,是线上项目报错,只有日志

@mrniko
Copy link
Member

mrniko commented May 30, 2024

NoClassDefFoundError: com/esotericsoftware/minlog/Log

Check the classpath

@mrniko mrniko closed this as completed May 30, 2024
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

3 participants