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

                 Key: QPID-2788
                 URL: https://issues.apache.org/jira/browse/QPID-2788
             Project: Qpid
          Issue Type: Bug
          Components: Java Management : JMX Console
    Affects Versions: 0.6, 0.5, M4, M3, M2.1
            Reporter: Robbie Gemmell
            Assignee: Robbie Gemmell
             Fix For: 0.7


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)


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to