[ 
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-subscr...@qpid.apache.org

Reply via email to