[
https://issues.apache.org/jira/browse/AMQ-5161?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13994548#comment-13994548
]
james commented on AMQ-5161:
----------------------------
There was actually already a race condition on async startup, as i reported in
the related issue, it just got worse in 5.9.1. i don't think there is
necessarily a need for an isStarted loop. the connector already does something
to that affect _after_ it gets a valid handle to the broker. the gist of the
problem is that there are a few "key" broker references which _must_ be
initialized before the asynchronous startup part proceeds (i.e. before the
start() method call returns). if you look at the workaround i posted, you can
see which references need to be initialized before the start method returns.
> NullPointerException during async startup
> -----------------------------------------
>
> Key: AMQ-5161
> URL: https://issues.apache.org/jira/browse/AMQ-5161
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.9.1
> Reporter: james
> Attachments: QueueService2Test.java
>
>
> I'm using an embedded broker with asynchronous startup enabled. My setup
> worked using 5.9.0. When i upgraded to 5.9.1, i started getting this
> exception on startup:
> {noformat}
> javax.jms.JMSException: java.lang.NullPointerException
> at
> org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:54)
> at
> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1408)
> at
> org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1513)
> at
> org.apache.activemq.ActiveMQConnection.setClientID(ActiveMQConnection.java:417)
> at <...internal system startup stack trace...>
> Caused by: java.lang.NullPointerException
> at
> org.apache.activemq.broker.jmx.ManagedRegionBroker.addConnection(ManagedRegionBroker.java:232)
> at
> org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:92)
> at
> org.apache.activemq.advisory.AdvisoryBroker.addConnection(AdvisoryBroker.java:91)
> at
> org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:92)
> at
> org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:92)
> at
> org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:92)
> at
> org.apache.activemq.broker.MutableBrokerFilter.addConnection(MutableBrokerFilter.java:97)
> at
> org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:759)
> at org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:139)
> at
> org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:291)
> at
> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:145)
> at
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
> at
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
> at
> org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:247)
> at
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133)
> at
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
> at java.lang.Thread.run(Thread.java:662)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.2#6252)