camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Steve Drach <ste...@glam.com>
Subject NPE in RouteContextProcessor
Date Mon, 30 Jul 2012 23:52:12 GMT
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.

Mime
View raw message