[
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, 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' 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, 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.