Qpid
  1. Qpid
  2. QPID-2788

jmx management console can throw ConcurrentModificationException whilst connected to (older) brokers with MBeans actively (un)registering

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: M2.1, M3, M4, 0.5, 0.6
    • Fix Version/s: 0.7
    • Labels:
      None

      Description

      The JMX management console can throw ConcurrentModificationException whilst connected to (older) brokers with mbeans actively (un)registering. This process causes receipt of JMX connection notifications that the console uses to update its record of registered MBeans. The notifications are received on a separate thread from the UI's Event Dispatching Thread, and the two can interact whilst the view is being refreshed utilising the lists of registered MBeans, such that a CME is thrown.

      This behaviour has only been observed on the queue selection screen whilst connected to older brokers, as the process used to generate the view makes use of the local queue list to individually query the broker for the required queue attribute information, whereas on newer brokers the list is not used at all since the broker is able to supply the console all the queue names and attribute information as one result.

      java.util.ConcurrentModificationException
      at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
      at java.util.AbstractList$Itr.next(AbstractList.java:343)
      at org.apache.qpid.management.ui.jmx.MBeanUtility.getQueueAttributes(MBeanUtility.java:305)
      at org.apache.qpid.management.ui.views.type.QueueTypeTabControl.refresh(QueueTypeTabControl.java:268)
      at org.apache.qpid.management.ui.views.MBeanView.refresh(MBeanView.java:526)
      at org.apache.qpid.management.ui.RefreshIntervalComboPanel$RefreshTask.run(RefreshIntervalComboPanel.java:117)
      at org.eclipse.swt.widgets.Display.timerProc(Display.java:3886)
      at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
      at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1550)
      at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3031)
      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)

        Activity

        There are no comments yet on this issue.

          People

          • Assignee:
            Robbie Gemmell
            Reporter:
            Robbie Gemmell
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development