You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Robbie Gemmell (JIRA)" <qp...@incubator.apache.org> on 2010/08/12 01:31:17 UTC
[jira] Created: (QPID-2788) jmx management console can throw
ConcurrentModificationException whilst connected to (older) brokers with
MBeans actively (un)registering
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:dev-subscribe@qpid.apache.org
[jira] Updated: (QPID-2788) jmx management console can throw
ConcurrentModificationException whilst connected to (older) brokers with
MBeans actively (un)registering
Posted by "Robbie Gemmell (JIRA)" <qp...@incubator.apache.org>.
[ https://issues.apache.org/jira/browse/QPID-2788?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Robbie Gemmell updated QPID-2788:
---------------------------------
Status: Ready To Review (was: In Progress)
> 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: M2.1, M3, M4, 0.5, 0.6
> 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:dev-subscribe@qpid.apache.org