You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Leo Guo (Jira)" <ji...@apache.org> on 2020/09/22 10:06:00 UTC

[jira] [Comment Edited] (CAMEL-15564) JDBC BASED Persistence Aggregator Deserialization Issue

    [ https://issues.apache.org/jira/browse/CAMEL-15564?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17199937#comment-17199937 ] 

Leo Guo edited comment on CAMEL-15564 at 9/22/20, 10:05 AM:
------------------------------------------------------------

Hi [~davsclaus],

Any suggestion? Currently we are pending on this issue, many thanks if any idea.

 

I can't see serialVersionUID in DefaultExchange class, is that cause this issue?


was (Author: leoguo):
Hi [~davsclaus],

Any suggestion? Currently we are pending on this issue, many thanks if any idea.

> JDBC BASED Persistence Aggregator Deserialization Issue
> -------------------------------------------------------
>
>                 Key: CAMEL-15564
>                 URL: https://issues.apache.org/jira/browse/CAMEL-15564
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-sql
>    Affects Versions: 2.25.1, 3.4.3
>            Reporter: Leo Guo
>            Priority: Minor
>
> USING THE JDBC BASED AGGREGATION REPOSITORY in cluster architecture, set different correlation Id in each instance, so the aggregated message will be picked up by instance which saved data in table.
> But randomly get below issue once read data from table then deserialize exchange, once issue occur message won't be deleted from table when new message come in will read data then constantly throw exception.
> java.lang.RuntimeException: Error getting key wgc_1_ACE_NOT_VALID from repository CRD_INT.FI_QAS_PRICE_AGG
>  at org.apache.camel.processor.aggregate.jdbc.JdbcAggregationRepository$3.doInTransaction(JdbcAggregationRepository.java:293)
>  at org.apache.camel.processor.aggregate.jdbc.JdbcAggregationRepository$3.doInTransaction(JdbcAggregationRepository.java:282)
>  at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
>  at org.apache.camel.processor.aggregate.jdbc.JdbcAggregationRepository.get(JdbcAggregationRepository.java:282)
>  at org.apache.camel.processor.aggregate.jdbc.JdbcAggregationRepository.get(JdbcAggregationRepository.java:274)
>  at org.apache.camel.processor.aggregate.AggregateProcessor$AggregationTimeoutMap.onEviction(AggregateProcessor.java:1186)
>  at org.apache.camel.processor.aggregate.AggregateProcessor$AggregationTimeoutMap.onEviction(AggregateProcessor.java:1152)
>  at org.apache.camel.support.DefaultTimeoutMap.purge(DefaultTimeoutMap.java:229)
>  at org.apache.camel.processor.aggregate.AggregateProcessor$AggregationTimeoutMap.purge(AggregateProcessor.java:1166)
>  at org.apache.camel.support.DefaultTimeoutMap.run(DefaultTimeoutMap.java:179)
>  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>  at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
>  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
>  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
>  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  at java.lang.Thread.run(Thread.java:748)
> Caused by: java.io.StreamCorruptedException: BigInteger: signum-magnitude mismatch
>  at java.math.BigInteger.readObject(BigInteger.java:4525)
>  at sun.reflect.GeneratedMethodAccessor70.invoke(Unknown Source)
>  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.lang.reflect.Method.invoke(Method.java:498)
>  at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1184)
>  at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2257)
>  at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2148)
>  at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1647)
>  at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2366)
>  at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:613)
>  at java.math.BigDecimal.readObject(BigDecimal.java:3779)
>  at sun.reflect.GeneratedMethodAccessor69.invoke(Unknown Source)
>  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.lang.reflect.Method.invoke(Method.java:498)
>  at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1184)
>  at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2257)
>  at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2148)
>  at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1647)
>  at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2366)
>  at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2290)
>  at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2148)
>  at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1647)
>  at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2366)
>  at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2290)
>  at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2148)
>  at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1647)
>  at java.io.ObjectInputStream.readObject(ObjectInputStream.java:483)
>  at java.io.ObjectInputStream.readObject(ObjectInputStream.java:441)
>  at java.util.ArrayList.readObject(ArrayList.java:799)
>  at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source)
>  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.lang.reflect.Method.invoke(Method.java:498)
>  at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1184)
>  at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2257)
>  at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2148)
>  at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1647)
>  at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2366)
>  at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2290)
>  at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2148)
>  at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1647)
>  at java.io.ObjectInputStream.readObject(ObjectInputStream.java:483)
>  at java.io.ObjectInputStream.readObject(ObjectInputStream.java:441)
>  at org.apache.camel.processor.aggregate.jdbc.JdbcCamelCodec.decode(JdbcCamelCodec.java:88)
>  at org.apache.camel.processor.aggregate.jdbc.JdbcCamelCodec.unmarshallExchange(JdbcCamelCodec.java:58)
>  at org.apache.camel.processor.aggregate.jdbc.JdbcAggregationRepository$3.doInTransaction(JdbcAggregationRepository.java:288)
>  ... 16 common frames omitted
>  
> Upgrade to camel 3.4.3 there is still deserialize issue.
> at org.apache.camel.processor.aggregate.AggregateProcessor.doInOptimisticLock(AggregateProcessor.java:372)
>  at org.apache.camel.processor.aggregate.AggregateProcessor.process(AggregateProcessor.java:320)
>  at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:702)
>  at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
>  at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
>  at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:128)
>  at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:736)
>  at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:696)
>  at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:674)
>  at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1189)
>  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> Caused by: java.io.InvalidClassException: java.math.BigInteger; local class incompatible: stream classdesc serialVersionUID = -8286623314374558947, local class serialVersionUID = -8287574255936472291
>  at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1830)
>  at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1647)
>  at java.math.BigDecimal.readObject(BigDecimal.java:3779)
>  at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2366)
>  at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2290)
>  at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2148)
>  at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2148)
>  at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1647)
>  at java.util.ArrayList.readObject(ArrayList.java:799)
>  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.lang.reflect.Method.invoke(Method.java:498)
>  at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2257)
>  at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2148)
>  at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1647)
>  at java.io.ObjectInputStream.readObject(ObjectInputStream.java:441)
>  at org.apache.camel.processor.aggregate.jdbc.JdbcCamelCodec.decode(JdbcCamelCodec.java:96)
>  at org.apache.camel.processor.aggregate.jdbc.JdbcCamelCodec.unmarshallExchange(JdbcCamelCodec.java:67)
>  ... 29 common frames omitted



--
This message was sent by Atlassian Jira
(v8.3.4#803005)