codingapi / codingapi/tx-lcn

在跨服务调用的时候,经常会偶发性报这个错。

Ouverte
#570 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
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
![image](https://user-images.githubusercontent.com/62318774/133594226-572e9d60-8e53-4b0d-8060-df2364fdaab0.png)

```
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.