在跨服务调用的时候,经常会偶发性报这个错。
- Langage dominant
- Java
- Étoiles
- 4.2k
- Forks
- 1.4k
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
- [ ] I have searched the [issues](https://github.com/codingapi/tx-lcn/issues) of this repository and believe that this is not a duplicate.
### 1. Bug Description
在跨服务调用的时候,经常会偶发性报这个错。
2021-09-15 12:45:35 ERROR FEBS-Server-Mall nioEventLoopGroup-6-1 com.codingapi.txlcn.txmsg.netty.handler.NettyClientRetryHandler NettyClientRetryHandler - exception .
io.netty.handler.codec.DecoderException: com.codingapi.txlcn.common.exception.SerializerException: java.lang.ClassNotFoundException: org.hibernate.exception.SQLGrammarException
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:326)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:300)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1422)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:931)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:700)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:635)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:552)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:514)
at io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1050)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.codingapi.txlcn.common.exception.SerializerException: java.lang.ClassNotFoundException: org.hibernate.exception.SQLGrammarException
at com.codingapi.txlcn.common.util.serializer.ProtostuffSerializer.deSerialize(ProtostuffSerializer.java:99)
at com.codingapi.txlcn.common.util.serializer.SerializerContext.deSerialize(SerializerContext.java:61)
at com.codingapi.txlcn.txmsg.netty.handler.ObjectSerializerDecoder.decode(ObjectSerializerDecoder.java:41)
at com.codingapi.txlcn.txmsg.netty.handler.ObjectSerializerDecoder.decode(ObjectSerializerDecoder.java:31)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)
... 21 common frames omitted
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.hibernate.exception.SQLGrammarException
at io.protostuff.runtime.RuntimeEnv.loadClass(RuntimeEnv.java:258)
at io.protostuff.runtime.DefaultIdStrategy.getSchemaWrapper(DefaultIdStrategy.java:185)
at io.protostuff.runtime.DefaultIdStrategy.resolvePojoFrom(DefaultIdStrategy.java:524)
at io.protostuff.runtime.PolymorphicThrowableSchema.readObjectFrom(PolymorphicThrowableSchema.java:205)
at io.protostuff.runtime.PolymorphicThrowableSchema.readObjectFrom(PolymorphicThrowableSchema.java:199)
at io.protostuff.runtime.PolymorphicThrowableSchema.mergeFrom(PolymorphicThrowableSchema.java:129)
at io.protostuff.CodedInput.mergeObjectEncodedAsGroup(CodedInput.java:359)
at io.protostuff.CodedInput.mergeObject(CodedInput.java:321)
at io.protostuff.runtime.RuntimeUnsafeFieldFactory$15$1.mergeFrom(RuntimeUnsafeFieldFactory.java:1217)
at io.protostuff.runtime.RuntimeSchema.mergeFrom(RuntimeSchema.java:466)
at io.protostuff.runtime.PolymorphicThrowableSchema.readObjectFrom(PolymorphicThrowableSchema.java:243)
at io.protostuff.runtime.ObjectSchema.readObjectFrom(ObjectSchema.java:678)
at io.protostuff.runtime.ObjectSchema.mergeFrom(ObjectSchema.java:350)
at io.protostuff.CodedInput.mergeObjectEncodedAsGroup(CodedInput.java:359)
at io.protostuff.CodedInput.mergeObject(CodedInput.java:321)
at io.protostuff.runtime.RuntimeUnsafeFieldFactory$15$1.mergeFrom(RuntimeUnsafeFieldFactory.java:1217)
at io.protostuff.runtime.RuntimeSchema.mergeFrom(RuntimeSchema.java:466)
at io.protostuff.CodedInput.mergeObjectEncodedAsGroup(CodedInput.java:359)
at io.protostuff.CodedInput.mergeObject(CodedInput.java:321)
at io.protostuff.runtime.RuntimeUnsafeFieldFactory$13$1.mergeFrom(RuntimeUnsafeFieldFactory.java:1038)
at io.protostuff.runtime.RuntimeSchema.mergeFrom(RuntimeSchema.java:466)
at io.protostuff.IOUtil.mergeFrom(IOUtil.java:77)
at io.protostuff.ProtostuffIOUtil.mergeFrom(ProtostuffIOUtil.java:122)
at com.codingapi.txlcn.common.util.serializer.ProtostuffSerializer.deSerialize(ProtostuffSerializer.java:96)
... 25 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.hibernate.exception.SQLGrammarException
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:92)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at io.protostuff.runtime.RuntimeEnv.loadClass(RuntimeEnv.java:251)
... 48 common frames omitted
### 2. Environment:
- JDK version:1.8
- OS:
- TX-LCN version:5.0.2
- Others:
### 3. Exception Stacktrace

```
Paste your Exception Stacktrace here!
```
### 4. Tour Idea
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par com.codingapi.txlcn.common.util.serializer.ProtostuffSerializer, en particulier deSerialize, et suivez ObjectSerializerDecoder dans le chemin de messages interservices de Netty. Recherchez pourquoi la désérialisation ne peut pas charger org.hibernate.exception.SQLGrammarException entre les services et reproduisez l’échec intermittent dans l’environnement indiqué avec JDK 8 et TX-LCN 5.0.2. Le travail est terminé lorsque l’appel interservices indiqué n’échoue plus avec cette ClassNotFoundException.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java
- Domaine
- distributed-systems
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100