Occasional NPE with Qpid Management Console when connecting to new server
-------------------------------------------------------------------------

                 Key: QPID-3672
                 URL: https://issues.apache.org/jira/browse/QPID-3672
             Project: Qpid
          Issue Type: Bug
          Components: Java Management : JMX Interface
    Affects Versions: 0.15
            Reporter: Keith Wall


We are seeing the follow NPE whilst connecting the Qpid Management Console to 
the Broker.  The NPE seems to be non-deterministic.

{code}
java.lang.NullPointerException
        at 
org.apache.qpid.management.ui.views.NavigationView.doesMBeanNodeAlreadyExist(NavigationView.java:584)
        at 
org.apache.qpid.management.ui.views.NavigationView.addManagedBean(NavigationView.java:685)
        at 
org.apache.qpid.management.ui.views.NavigationView.populateServer(NavigationView.java:510)
        at 
org.apache.qpid.management.ui.views.NavigationView.addNewServer(NavigationView.java:314)
        at 
org.apache.qpid.management.ui.actions.AddServer.run(AddServer.java:72)
        at 
org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)
        at 
org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:229)
        at 
org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583)
        at 
org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500)
        at 
org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1158)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3401)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3033)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
        at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
        at 
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
        at 
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at org.apache.qpid.management.ui.Application.run(Application.java:46)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:574)
        at 
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:195)
        at 
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at 
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at 
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
        at 
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
{code}

Investigation has shown that the NPE is caused between an interaction between 
the ShutdownPlugin and the NavigationView#addManagedBean method of the UI.

As the Shutdown Plugin has no name (only a type), if it is processed by the 
addManagedBean algorithm *first* all is well.  However if it is processed 
*after* another MBean the NPE occurs.  The non deterministic nature of the NPE 
is caused by the order in which the MBeans are reported.

Removing the Shutdown plugin from the lib/plugin directory works around the 
problem.


 

--
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

        

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org

Reply via email to