Description
As highlighted by the BDB HA Management tests on Jenkins CI, if the broker needs to shutdown prematurely during its startup sequence, the stopping of the JMXManagement module may cause a spurious NPE.
BROKER: UNKNOWN nodetestRestartNodeWithNewPortNumberWithoutFirstCallingUpdateAddressThrowsAnException10005(-1) 2013-10-16 02:19:46,749 DEBUG [server.configuration.updater.TaskExecutor] Performing task ChangeStateTask [object=BrokerAdapter [id=9bb0597b-4809-4245-890b-c4e48a7f3a14, name=Broker], expectedState=null, desiredState=STOPPED] BROKER: UNKNOWN nodetestRestartNodeWithNewPortNumberWithoutFirstCallingUpdateAddressThrowsAnException10005(-1) 2013-10-16 02:19:46,752 ERROR [server.model.adapter.BrokerAdapter] Failed to stop JMXManagement [id=89ff5ea6-9cbe-48ef-8b7d-41bb05a3e21f, name=MANAGEMENT-JMX] BROKER: java.lang.NullPointerException BROKER: at org.apache.qpid.server.jmx.JMXManagement.stop(JMXManagement.java:233) BROKER: at org.apache.qpid.server.jmx.JMXManagement.setState(JMXManagement.java:119) BROKER: at org.apache.qpid.server.model.adapter.AbstractAdapter.setDesiredState(AbstractAdapter.java:122) BROKER: at org.apache.qpid.server.model.adapter.BrokerAdapter.changeState(BrokerAdapter.java:919) BROKER: at org.apache.qpid.server.model.adapter.BrokerAdapter.setState(BrokerAdapter.java:892) BROKER: at org.apache.qpid.server.model.adapter.AbstractAdapter.setDesiredState(AbstractAdapter.java:122) BROKER: at org.apache.qpid.server.configuration.updater.ChangeStateTask.call(ChangeStateTask.java:59) BROKER: at org.apache.qpid.server.configuration.updater.ChangeStateTask.call(ChangeStateTask.java:28) BROKER: at org.apache.qpid.server.configuration.updater.TaskExecutor.executeTask(TaskExecutor.java:213) BROKER: at org.apache.qpid.server.configuration.updater.TaskExecutor.access$200(TaskExecutor.java:46) BROKER: at org.apache.qpid.server.configuration.updater.TaskExecutor$CallableWrapper$1.run(TaskExecutor.java:252) BROKER: at java.security.AccessController.doPrivileged(Native Method) BROKER: at javax.security.auth.Subject.doAs(Subject.java:396) BROKER: at org.apache.qpid.server.configuration.updater.TaskExecutor$CallableWrapper.call(TaskExecutor.java:247) BROKER: at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) BROKER: at java.util.concurrent.FutureTask.run(FutureTask.java:138) BROKER: at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) BROKER: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) BROKER: at java.lang.Thread.run(Thread.java:662)