qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marnie McCormack (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (QPID-2788) jmx management console can throw ConcurrentModificationException whilst connected to (older) brokers with MBeans actively (un)registering
Date Thu, 02 Dec 2010 13:22:11 GMT

     [ https://issues.apache.org/jira/browse/QPID-2788?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Marnie McCormack resolved QPID-2788.
------------------------------------

    Resolution: Fixed

> 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


Mime
View raw message