On 7/31/12 2:40 AM, "Willem jiang" <[email protected]> wrote:
>What's your Camel route look like ?
Here's the subset that shows the path taken, starting with "spool:core".
The section marked with
<==== is the last one I see in the trace.
/* From Core */
from("spool:core:store")
.process(new IllegalSMTPAddressFixer())
.process(new CopyFromAndToIntact())
.process(new AddressValidationFilter())
.choice()
.when(header(DO_NOT_SEND).isNotNull())
.to("seda:drop")
.otherwise()
.to("sedax:delivery");
Š
/* Shared */
from("sedax:delivery?threads=" + numOutgoingThreads) <=====
.process(new MessageTypeProcessor())
.process(logger)
.to("smtp:out",
"spool:*:delete");
from("seda:drop").to("direct:drop");
from("direct:drop")
.process(new ConvertDeliveryToDeadDelivery())
.process(new LogDeadDelivery())
.to("spool:*:delete");
>
>--
>Willem Jiang
>
>
>
>On Tuesday, July 31, 2012 at 7:52 AM, Steve Drach wrote:
>
>> I'm using Camel 2.4.10. I'm get a NPE in RouteContextProcessor at line
>>42:
>>
>> 29 public class RouteContextProcessor extends DelegateAsyncProcessor {
>> ...
>> 38 @Override
>> 39 protected boolean processNext(final Exchange exchange, final
>> AsyncCallback callback) {
>> 40 // push the current route context
>> 41 if (exchange.getUnitOfWork() != null) {
>> 42 exchange.getUnitOfWork().pushRouteContext(routeContext);
>> 43 }
>>
>> I am able to demonstrate that even though the test in line 41 is true,
>> getUnitOfWork() in null in line 43. I do this by instrumenting the code
>>as
>> follows:
>>
>> @Override
>> protected boolean processNext(final Exchange exchange, final
>> AsyncCallback callback) {
>> // push the current route context
>> try {
>> if (exchange.getUnitOfWork() != null) {
>> exchange.getUnitOfWork().pushRouteContext(routeContext);
>> }
>> } catch (Exception e) {
>> System.out.println("********************\n"+exchange);
>> System.out.println(exchange.getUnitOfWork());
>> e.printStackTrace();
>> System.exit(1);
>>
>> }
>>
>> And I can clearly see the null value. This implies to me somebody else
>>has
>> a reference to the same exchange object and is changing it between
>>lines 42
>> and line 43. This only happens occasionally (1 in 1000 times).
>>
>> My code has 10 threads, so I wouldn't be surprised if it was my
>>problem, but
>> I just can't see it. I am not doing anything with the UnitOfWork in an
>> exchange. At most, I change the body of the Message and perhaps the
>> headers.
>>
>> This is very difficult to debug because it happens so infrequently. Does
>> anyone have a suggestion that could help me?
>>
>>
>>
>>
>> --
>> View this message in context:
>>http://camel.465427.n5.nabble.com/NPE-in-RouteContextProcessor-tp5716620.
>>html
>> Sent from the Camel - Users mailing list archive at Nabble.com
>>(http://Nabble.com).
>>
>>
>
>