On 2.x you can set the exchange property with key Exchange.REDELIVERY_EXHAUSTED

On Mon, Oct 26, 2020 at 4:44 PM Shenavai, Manuel
<manuel.shena...@sap.com> wrote:
>
> Hi Claus,
>
> thanks for providing a fix for this problem. The fix is available for 3.6.x 
> codeline. We are running on 2.25.x codeline. Is there a chance to get a patch 
> for 2.x as well?
>
> I picked the change in our codeline and found that there is adapt()-method 
> used, that is not available in 2.25:
> exchange.adapt(ExtendedExchange.class).setRedeliveryExhausted(true);
> https://github.com/apache/camel/commit/4cd127eef9f919b36dc761fc495e284e5582663c#diff-9e035215aa8ee92dbb890dc7fe58f4159deb5f2ccf95ed981b0d2b0ed044e8e9R817
>
> Thanks in advance &
> Best regards,
> Manuel
>
> -----Original Message-----
> From: Shenavai, Manuel <manuel.shena...@sap.com>
> Sent: Freitag, 9. Oktober 2020 14:47
> To: users@camel.apache.org
> Subject: [CAUTION] RE: OnException and StreamCaching
>
> Hi Claus,
>
> thanks for confirming. I created a Jira for it:
> https://issues.apache.org/jira/browse/CAMEL-15665
>
> Best regards,
> Manuel
>
> -----Original Message-----
> From: Claus Ibsen <claus.ib...@gmail.com>
> Sent: Freitag, 9. Oktober 2020 13:52
> To: users@camel.apache.org
> Subject: Re: OnException and StreamCaching
>
> Hi
>
> Ah thanks for bringing this up. Yeah its a little bug, we should make
> that stream caching more robust.
> You are welcome to create a JIRA
>
> On Wed, Oct 7, 2020 at 4:07 PM Shenavai, Manuel <manuel.shena...@sap.com> 
> wrote:
> >
> > Hi everyone,
> >
> >
> >
> > we are using the Camel-onException error handling and found that the 
> > exception-handling is sometimes not executed in case of error. When 
> > StreamCaching is enabled in the route and an error happens during 
> > TypeConversion (see stacktrace below), the exception handling is not 
> > executed but the process just fails. I attached a scenario to reproduce the 
> > problem to this mail (ExceptionHandling.java).
> >
> >
> >
> > Is this the expected behavior? If yes, is there a way to make sure that the 
> > exception-handling is executed anyways?
> >
> >
> >
> > Thanks in advance &
> >
> > Best regards,
> >
> > Manuel
> >
> >
> >
> >
> >
> >
> >
> > org.apache.camel.CamelExecutionException: Exception occurred during 
> > execution on the exchange: 
> > Exchange[ID-WDFN34732556A-60796-1602075170410-0-2]
> >
> >
> >
> >                at 
> > org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1706)
> >
> >                at 
> > org.apache.camel.util.ExchangeHelper.extractResultBody(ExchangeHelper.java:660)
> >
> >                at 
> > org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:471)
> >
> >                at 
> > org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:467)
> >
> >                at 
> > org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:139)
> >
> >                at 
> > org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:359)
> >
> >                at 
> > parserException.ExceptionHandling.sendMessage(ExceptionHandling.java:28)
> >
> >                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native 
> > Method)
> >
> >                at 
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                at 
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                at java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                at 
> > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
> >
> >                at 
> > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> >
> >                at 
> > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
> >
> >                at 
> > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> >
> >                at 
> > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
> >
> >                at 
> > org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
> >
> >                at 
> > org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
> >
> >                at 
> > org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
> >
> >                at org.junit.rules.RunRules.evaluate(RunRules.java:20)
> >
> >                at 
> > org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
> >
> >                at 
> > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
> >
> >                at 
> > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> >
> >                at 
> > org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
> >
> >                at 
> > org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
> >
> >                at 
> > org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
> >
> >                at 
> > org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
> >
> >                at 
> > org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
> >
> >                at 
> > org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
> >
> >                at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
> >
> >                at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
> >
> >                at 
> > com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
> >
> >                at 
> > com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
> >
> >                at 
> > com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)
> >
> >                at 
> > com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)
> >
> > Caused by: org.apache.camel.TypeConversionException: Error during type 
> > conversion from type: java.lang.String to the required type: 
> > org.apache.camel.StreamCache with value 
> > org.apache.camel.component.cxf.CxfPayload@36328d33 due 
> > java.lang.ClassCastException: java.lang.String cannot be cast to 
> > javax.xml.transform.Source
> >
> >                at 
> > org.apache.camel.impl.converter.BaseTypeConverterRegistry.createTypeConversionException(BaseTypeConverterRegistry.java:629)
> >
> >                at 
> > org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:150)
> >
> >                at 
> > org.apache.camel.core.osgi.OsgiTypeConverter.convertTo(OsgiTypeConverter.java:111)
> >
> >                at 
> > org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:78)
> >
> >                at 
> > org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:53)
> >
> >                at 
> > org.apache.camel.impl.DefaultStreamCachingStrategy.cache(DefaultStreamCachingStrategy.java:189)
> >
> >                at 
> > org.apache.camel.processor.CamelInternalProcessor$StreamCachingAdvice.before(CamelInternalProcessor.java:788)
> >
> >                at 
> > org.apache.camel.processor.CamelInternalProcessor$StreamCachingAdvice.before(CamelInternalProcessor.java:767)
> >
> >                at 
> > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:145)
> >
> >                at 
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:121)
> >
> >                at 
> > org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
> >
> >                at 
> > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)
> >
> >                at 
> > org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)
> >
> >                at 
> > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)
> >
> >                at 
> > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
> >
> >                at 
> > org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:68)
> >
> >                at 
> > org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:412)
> >
> >                at 
> > org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:380)
> >
> >                at 
> > org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:270)
> >
> >                at 
> > org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:380)
> >
> >                at 
> > org.apache.camel.impl.ProducerCache.send(ProducerCache.java:221)
> >
> >                at 
> > org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:124)
> >
> >                at 
> > org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:137)
> >
> >                ... 30 more
> >
> > Caused by: org.apache.camel.RuntimeCamelException: 
> > java.lang.ClassCastException: java.lang.String cannot be cast to 
> > javax.xml.transform.Source
> >
> >                at 
> > org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1690)
> >
> >                at 
> > org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:1285)
> >
> >                at 
> > org.apache.camel.impl.converter.StaticMethodTypeConverter.convertTo(StaticMethodTypeConverter.java:59)
> >
> >                at 
> > org.apache.camel.impl.converter.BaseTypeConverterRegistry.doConvertTo(BaseTypeConverterRegistry.java:306)
> >
> >                at 
> > org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:133)
> >
> >                ... 51 more
> >
> > Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to 
> > javax.xml.transform.Source
> >
> >                at 
> > org.apache.camel.component.cxf.converter.CachedCxfPayload.<init>(CachedCxfPayload.java:50)
> >
> >                at 
> > org.apache.camel.component.cxf.converter.CxfPayloadConverter.cxfPayLoadToStreamCache(CxfPayloadConverter.java:118)
> >
> >                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native 
> > Method)
> >
> >                at 
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >
> >                at 
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >
> >                at java.lang.reflect.Method.invoke(Method.java:498)
> >
> >                at 
> > org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:1281)
> >
> >                ... 54 more
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to