Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-3672

Occasional NPE from Qpid Management Console when connecting to server

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.15
    • None
    • None

    Description

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

      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)
      

      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.

      Attachments

        Activity

          People

            kwall Keith Wall
            kwall Keith Wall
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: