You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Robert H. Pollack (JIRA)" <ji...@apache.org> on 2009/06/08 18:24:35 UTC
[jira] Reopened: (CAMEL-993) NPE in TraceFormatter
[ https://issues.apache.org/activemq/browse/CAMEL-993?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Robert H. Pollack reopened CAMEL-993:
-------------------------------------
I am experiencing the same problem in 1.6.0, without an aggregator. My route logic (in XML) is
<route errorHandlerRef="myErrorHandler">
<from uri="jbi:service:urn:distributor.dmf.company.com:DistributorService"/>
<convertBodyTo type="java.lang.String"/>
<inOnly uri="direct:packetQueue"/>
</route>
My stack trace is
java.lang.NullPointerException
at org.apache.camel.processor.interceptor.TraceFormatter.getBreadCrumbID(TraceFormatter.java:202)
at org.apache.camel.processor.interceptor.TraceFormatter.getExchangeAndNode(TraceFormatter.java:271)
at org.apache.camel.processor.interceptor.TraceFormatter.format(TraceFormatter.java:54)
at org.apache.camel.processor.interceptor.TraceInterceptor.format(TraceInterceptor.java:97)
at org.apache.camel.processor.Logger.logMessage(Logger.java:234)
at org.apache.camel.processor.Logger.process(Logger.java:125)
at org.apache.camel.processor.interceptor.TraceInterceptor.logException(TraceInterceptor.java:122)
at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:90)
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:80)
at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41)
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:55)
at org.apache.camel.processor.LoggingErrorHandler.process(LoggingErrorHandler.java:54)
at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:43)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:115)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:89)
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)
at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41)
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:55)
at org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:50)
at org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:79)
at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:84)
at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:43)
at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:64)
at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41)
at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:66)
at org.apache.servicemix.camel.CamelProviderEndpoint.handleActiveProviderExchange(CamelProviderEndpoint.java:109)
at org.apache.servicemix.camel.CamelProviderEndpoint.process(CamelProviderEndpoint.java:81)
at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:631)
at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:585)
at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchangeInTx(AsyncBaseLifeCycle.java:480)
at org.apache.servicemix.common.AsyncBaseLifeCycle$2.run(AsyncBaseLifeCycle.java:349)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
The code in TraceFormatter.java looks like this:
protected Object getBreadCrumbID(Exchange exchange) {
UnitOfWork unitOfWork = exchange.getUnitOfWork();
return unitOfWork.getId();
}
But there is code in UnitOfWorkProcessor.process() which seems to indicate that exchange.getUnitOfWork() will sometimes return null. This method begins by saying
if (exchange.getUnitOfWork() == null) {
// If there is no existing UoW, then we should start one and
// terminate it once processing is completed for the exchange.
Would it be possible to enhance TraceFormatter to simply check for this? I'm going to try
protected Object getBreadCrumbID(Exchange exchange) {
UnitOfWork unitOfWork = exchange.getUnitOfWork();
if (unitOfWork != null) {
return unitOfWork.getId();
} else {
return "[unknown UOW]";
}
}
If this doesn't work, I'll follow up with a message here.
> NPE in TraceFormatter
> ---------------------
>
> Key: CAMEL-993
> URL: https://issues.apache.org/activemq/browse/CAMEL-993
> Project: Apache Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 1.5.0
> Reporter: Vadim Chekan
> Assignee: Claus Ibsen
> Priority: Minor
> Fix For: 1.5.0
>
>
> This configuration causes NPE:
> {code}
> from("timer://kickoff_5?period=10000").
> setHeader("a").constant("aa").setBody().constant("a b c a_1 b_1").
> splitter(body().tokenize(" ")).
> setHeader("aggreagation_header").body().
> aggregator(header("aggreagation_header")).
> to("mock:out");
> {code}
> {code}
> 2008-10-17 07:47:11,321 [ Polling Thread] DEBUG DefaultAggregationCollection - put exchange:Exchange[Message: null] for key:null
> 2008-10-17 07:47:12,237 [ Polling Thread] ERROR Aggregator -
> java.lang.NullPointerException
> at org.apache.camel.processor.interceptor.TraceFormatter.getBreadCrumbID(TraceFormatter.java:150)
> at org.apache.camel.processor.interceptor.TraceFormatter.format(TraceFormatter.java:45)
> at org.apache.camel.processor.interceptor.TraceInterceptor.format(TraceInterceptor.java:94)
> at org.apache.camel.processor.Logger.logMessage(Logger.java:219)
> at org.apache.camel.processor.Logger.process(Logger.java:124)
> at org.apache.camel.processor.interceptor.TraceInterceptor.logException(TraceInterceptor.java:119)
> at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:87)
> at org.apache.camel.processor.BatchProcessor.processExchange(BatchProcessor.java:190)
> at org.apache.camel.processor.BatchProcessor.processBatch(BatchProcessor.java:168)
> at org.apache.camel.processor.BatchProcessor.run(BatchProcessor.java:68)
> at java.lang.Thread.run(Thread.java:619)
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.