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/27 22:28:54 UTC

[jira] Updated: (QPID-2788) jmx management console can throw ConcurrentModificationException whilst connected to (older) brokers with MBeans actively (un)registering

     [ 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