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]