[ 
https://issues.apache.org/activemq/browse/SMXCOMP-741?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Zobkov updated SMXCOMP-741:
-------------------------------------

    Description: 
StaticRoutingSlip endpoint throws NullPointerException: 
{noformat} 
java.lang.NullPointerException
        at 
org.apache.servicemix.eip.patterns.StaticRoutingSlip.processProviderAsync(StaticRoutingSlip.java:172)
        at 
org.apache.servicemix.eip.patterns.StaticRoutingSlip.processAsync(StaticRoutingSlip.java:141)
        at org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:165)
        at 
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
        at 
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:581)
        at 
org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:535)
        at 
org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
        at 
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620)
        at 
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
        at 
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
        at 
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)
{noformat} 
{code:java}
        } else { 
            MessageExchange me = getExchangeFactory().createInOutExchange(); 
            me.setProperty(correlation, exchange.getExchangeId());
            me.setProperty(index, new Integer(0));
            targets[0].configureTarget(me, getContext());                       
     //171
            store.store(exchange.getExchangeId(), exchange);                 // 
172
            MessageUtil.transferInToIn(exchange, me);                           
   // 173
            send(me);
        }
{code}
To reproduce exception you need to:
1) Stop(not shutdown) some SA with ant-tasks or jconsole;
2) Stop/kill ServiceMix;
3) Start ServiceMix;
4) Send some message through static-routing-slip endpoint;

Based on source code analyze -- problem in 'store' place and time 
initialization and affects all servicemix-eip endpoints and all versions, but 
not in SA/SU state restoration. It seems SA/SU state restoration procedure 
conforms to JBI spec.

There is general question how eip endpoints should work in 'stopped' state from 
JBI point of view? Perhaps eip endpoints should send Fault messages in 
'stopped' state.
 


  was:
StaticRoutingSlip endpoint throws NullPointerException: 
{noformat} 
java.lang.NullPointerException
        at 
org.apache.servicemix.eip.patterns.StaticRoutingSlip.processProviderAsync(StaticRoutingSlip.java:172)
        at 
org.apache.servicemix.eip.patterns.StaticRoutingSlip.processAsync(StaticRoutingSlip.java:141)
        at org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:165)
        at 
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
        at 
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:581)
        at 
org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:535)
        at 
org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
        at 
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620)
        at 
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
        at 
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
        at 
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)
{noformat} 
{code:java}
        } else { 
            MessageExchange me = getExchangeFactory().createInOutExchange(); 
            me.setProperty(correlation, exchange.getExchangeId());
            me.setProperty(index, new Integer(0));
            targets[0].configureTarget(me, getContext());                       
     //171
            store.store(exchange.getExchangeId(), exchange);                 // 
172
            MessageUtil.transferInToIn(exchange, me);                           
   // 173
            send(me);
        }
{code}
To reproduce exception you need to:
1) Stop(not shutdown) some SA with ant-tasks or jconsole;
2) Stop/kill ServiceMix;
3) Start ServiceMix;
4) Send some message through static-routing-slip endpoint;

Based on source code analyze -- problem in 'store' place and time 
initialization and affects all servicemix-eip endpoints, but not in SA/SU state 
restoration. It seems SA/SU state restoration procedure conforms to JBI spec.

There is general question how eip endpoints should work in 'stopped' state from 
JBI point of view? Perhaps eip endpoints should send Fault messages in 
'stopped' state.
 



> NullPointerException in servicemix-eip  endpoints
> -------------------------------------------------
>
>                 Key: SMXCOMP-741
>                 URL: https://issues.apache.org/activemq/browse/SMXCOMP-741
>             Project: ServiceMix Components
>          Issue Type: Bug
>          Components: servicemix-eip
>    Affects Versions: servicemix-eip-2008.01
>         Environment: ServiceMix 3.3, Java 1.5_14
>            Reporter: Alexander Zobkov
>
> StaticRoutingSlip endpoint throws NullPointerException: 
> {noformat} 
> java.lang.NullPointerException
>         at 
> org.apache.servicemix.eip.patterns.StaticRoutingSlip.processProviderAsync(StaticRoutingSlip.java:172)
>         at 
> org.apache.servicemix.eip.patterns.StaticRoutingSlip.processAsync(StaticRoutingSlip.java:141)
>         at org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:165)
>         at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:627)
>         at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:581)
>         at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:535)
>         at 
> org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
>         at 
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620)
>         at 
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
>         at 
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
>         at 
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>         at java.lang.Thread.run(Thread.java:595)
> {noformat} 
> {code:java}
>         } else { 
>             MessageExchange me = getExchangeFactory().createInOutExchange(); 
>             me.setProperty(correlation, exchange.getExchangeId());
>             me.setProperty(index, new Integer(0));
>             targets[0].configureTarget(me, getContext());                     
>        //171
>             store.store(exchange.getExchangeId(), exchange);                 
> // 172
>             MessageUtil.transferInToIn(exchange, me);                         
>      // 173
>             send(me);
>         }
> {code}
> To reproduce exception you need to:
> 1) Stop(not shutdown) some SA with ant-tasks or jconsole;
> 2) Stop/kill ServiceMix;
> 3) Start ServiceMix;
> 4) Send some message through static-routing-slip endpoint;
> Based on source code analyze -- problem in 'store' place and time 
> initialization and affects all servicemix-eip endpoints and all versions, but 
> not in SA/SU state restoration. It seems SA/SU state restoration procedure 
> conforms to JBI spec.
> There is general question how eip endpoints should work in 'stopped' state 
> from JBI point of view? Perhaps eip endpoints should send Fault messages in 
> 'stopped' state.
>  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to