You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Ashwin Jayaprakash <as...@gmail.com> on 2011/09/26 20:49:24 UTC

Method invocation stack during route execution - stack depth too high?

Hi, I was playing with a simple example using Camel and encountered an
exception in one of the routes. I had only 3 simple routes and in the
exception I saw that the method stack was already 65+ lines deep. The
exception was thrown midway in the second route - not even the final/3rd
route.

Don't you guys think this could be a problem with very long routes or where
latency is concerned? Perhaps a for-loop should execute the stages in the
pipeline instead of chaining the calls?

My sample routes:
    protected static class RouteBldr extends RouteBuilder {
        @Override
        public void configure() throws Exception {
            from("direct:lastMile")
                    .routeId("route.lastMile")
                    .log("Message body: ${body}")
                    .to("direct:localPbx");

            from("direct:localPbx")
                    .routeId("route.localPbx")
                    .bean(new SimpleBean())
                    .routingSlip(header("routeCallTo"));

            from("direct:exchanges.sfo")
                    .routeId("route.exchanges.sfo")
                    .log("SFO out");
        }
    }

Exception:
Exception in thread "main" org.apache.camel.CamelExecutionException:
Exception occurred during execution on the exchange: Exchange[Message:
<call><origin-country>AAA</origin-country><destination-country>BBB</destination-country></call>]
    at
org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1161)
    at
org.apache.camel.util.ExchangeHelper.extractResultBody(ExchangeHelper.java:512)
    at
org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:441)
    at
org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:437)
    at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:125)
    at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:130)
    at temp.CamelIntro.main(CamelIntro.java:31)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.NullPointerException
    at temp.CamelIntro$SimpleBean.hello(CamelIntro.java:81)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at
org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:329)
    at
org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:231)
    at
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:169)
    at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
    at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
    at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
    at
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:99)
    at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
    at
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:318)
    at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:209)
    at
org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:305)
    at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:116)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:79)
    at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:132)
    at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
    at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
    at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
    at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:69)
    at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
    at
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:61)
    at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
    at
org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:114)
    at
org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:286)
    at
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:109)
    at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
    at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
    at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
    at
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:99)
    at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
    at
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:318)
    at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:209)
    at
org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:305)
    at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:116)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:79)
    at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:132)
    at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
    at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
    at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
    at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:69)
    at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
    at
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:61)
    at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:102)
    at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:104)
    at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:85)
    at
org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:63)
    at
org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:345)
    at
org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:317)
    at
org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:222)
    at
org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:317)
    at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:168)
    at
org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:110)
    at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:123)
    ... 7 more



Thanks,
Ashwin.