[ 
https://issues.apache.org/jira/browse/CAMEL-4650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13147832#comment-13147832
 ] 

Babak Vahdat commented on CAMEL-4650:
-------------------------------------

I could reproduce your issue on the trunk through a 2 liner change of [1] as 
the following:

{code}
public class SedaConcurrentConsumersTest extends ContextTestSupport {

    public void testSendToSeda() throws Exception {
        MockEndpoint mock = getMockEndpoint("mock:result");
        mock.expectedBodiesReceived("Hello World");

        template.sendBody("seda:foo?concurrentConsumers=5", "Hello World");

        assertMockEndpointsSatisfied();
        
        context.getRoutes().get(0).getConsumer().start();
        template.sendBody("seda:foo?concurrentConsumers=5", "Claus absence 
today is a showstopper!");
    }

    @Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                
from("seda:foo?concurrentConsumers=5").noAutoStartup().to("mock:result");
                
                from("seda:foo?concurrentConsumers=5").to("mock:result");
            }
        };
    }
}
{code}

Which blows up with a NPE exactly on the same place as yours:

{code}
2011-11-10 17:58:42,108 [main           ] INFO  DefaultCamelContext            
- Apache Camel  (CamelContext: camel-1) is starting
2011-11-10 17:58:42,155 [main           ] INFO  AnnotationTypeConverterLoader  
- Found 3 packages with 15 @Converter classes to load
2011-11-10 17:58:42,217 [main           ] INFO  LazyLoadingTypeConverter       
- Loaded 163 core type converters (total 163 type converters)
2011-11-10 17:58:42,327 [main           ] INFO  DefaultCamelContext            
- Cannot start route route1 as its configured with autoStartup=false
2011-11-10 17:58:42,327 [main           ] INFO  DefaultCamelContext            
- Route: route2 started and consuming from: 
Endpoint[seda://foo?concurrentConsumers=5]
2011-11-10 17:58:42,327 [main           ] INFO  DefaultCamelContext            
- Total 2 routes, of which 1 is started.
2011-11-10 17:58:42,327 [main           ] INFO  DefaultCamelContext            
- Apache Camel  (CamelContext: camel-1) started in 0.282 seconds
2011-11-10 17:58:42,358 [main           ] INFO  MockEndpoint                   
- Asserting: Endpoint[mock://result] is satisfied
2011-11-10 17:58:42,358 [main           ] INFO  DefaultCamelContext            
- Apache Camel  (CamelContext:camel-1) is shutting down
2011-11-10 17:58:42,358 [main           ] INFO  DefaultShutdownStrategy        
- Starting to graceful shutdown 1 routes (timeout 10 seconds)
2011-11-10 17:58:42,374 [#1 - seda://foo] ERROR SedaConsumer                   
- Error processing exchange. Exchange[Message: Second Hello World]. Caused by: 
[java.lang.NullPointerException - null]
java.lang.NullPointerException
        at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)[file:/D:/Data/eclipse-workspace/camel/camel-core/target/classes/:]
        at 
org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:210)[file:/D:/Data/eclipse-workspace/camel/camel-core/target/classes/:]
        at 
org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:155)[file:/D:/Data/eclipse-workspace/camel/camel-core/target/classes/:]
        at 
org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:129)[file:/D:/Data/eclipse-workspace/camel/camel-core/target/classes/:]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_29]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_29]
        at java.lang.Thread.run(Thread.java:662)[:1.6.0_29]
2011-11-10 17:58:43,374 [ - ShutdownTask] INFO  DefaultShutdownStrategy        
- Route: route2 shutdown complete, was consuming from: 
Endpoint[seda://foo?concurrentConsumers=5]
2011-11-10 17:58:43,374 [main           ] INFO  DefaultShutdownStrategy        
- Graceful shutdown of 1 routes completed in 1 seconds
2011-11-10 17:58:43,374 [main           ] INFO  DefaultInflightRepository      
- Shutting down with no inflight exchanges.
2011-11-10 17:58:43,374 [main           ] INFO  DefaultCamelContext            
- Uptime: 1.329 seconds
2011-11-10 17:58:43,374 [main           ] INFO  DefaultCamelContext            
- Apache Camel  (CamelContext: camel-1) is shutdown in 1.016 seconds
{code}

This is a clear evidence for me that while you start the drainer route, the 
main route is *still* running causing the NPE as a side effect.

Again IMHO you misuse the Camel's provided Java-DSL. See my previous comments 
on this ticket for a possible fix of it.

I leave the closing of this ticket to you, as to my understanding it's 
definitely *not* a bug but just a side effect of the API-misusage.

Good luck
Babak 





[1] 
https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/component/seda/SedaConcurrentConsumersTest.java
                
> NPE when using SEDA route and attaching an extra consumer
> ---------------------------------------------------------
>
>                 Key: CAMEL-4650
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4650
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.8.2
>         Environment: Java 6, Camel 2.8.2, Centos 4.
>            Reporter: Tarjei Huse
>
> I'm trying to construct a system for moving some seda queues over to
> ActiveMQ during system shutdown. What I did was create a Route that
> connects to some of my seda queues and then drains the queue to activemq.
> Basicly I got two routes, the drainer:
> from("seda:" + sedaId + "?size=1000")
>                     .routeId(routeName +
> sedaIs).noAutoStartup().to(activeMQFailuresQueue);
> And the main route:
> from("seda:" + sedaId + "?size=1000")
>                     .routeId(routeName + sedaIs).to(SomeProcessor);
> Now, sometimes the main route stalls for various reasons I need to
> restart the jvm process it is running in, so I start the first route.
> But when trying this in production, I got:
>  java.lang.NullPointerException
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:78)
>     at
> org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:210)
>     at
> org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:155)
>     at
> org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:129)
>     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)
> Bvahdat added a comment:
> just a very tiny pointer:
> Looking at the source it seems that  the
> SedaEndpoint.getConsumerMulticastProcessor() method returns 'null' causing
> the NPE, as the condition:
> multicastStarted == false || consumerMulticastProcessor == null
> is true.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to