Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 347780

Summary: Concurrent modification exception - Adding/Removing Review Group
Product: z_Archived Reporter: Alvaro Sanchez-Leon <alvaro.sanchez-leon>
Component: MylynAssignee: Sebastien Dubois <sebastien.dubois>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3    
Version: unspecified   
Target Milestone: 0.9   
Hardware: PC   
OS: Windows Vista   
Whiteboard:

Description Alvaro Sanchez-Leon CLA 2011-05-31 09:37:05 EDT
When adding a new review group, R4E may prompt the user to remove a group reference entry path from the Preferences, if this path is not reached in the current session. If the user accepts the removal the following exception occurs.

The dialogue should be removed as this appears also during the Eclipse start sequence.  R4E functionality shall not be visible to the user unless the user triggers it.  
  A location out of reach is fairly common as the user moves location, the user can always visit the R4E preferences and clean the entries as he/she sees the need. Auditing the availability of the locations could be triggered by a button "validate locations" on the actual preference page, so the pop-up is only triggered on demand.

!ENTRY org.eclipse.equinox.preferences 4 2 2011-05-31 08:53:43.888
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.equinox.preferences".
!STACK 0
java.util.ConcurrentModificationException
	at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
	at java.util.AbstractList$Itr.next(AbstractList.java:343)
	at org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIReviewGroup.removeAllChildren(R4EUIReviewGroup.java:518)
	at org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIRootElement.removeChildrenFromUI(R4EUIRootElement.java:438)
	at org.eclipse.mylyn.reviews.r4e.ui.internal.navigator.ReviewNavigatorView.preferenceChange(ReviewNavigatorView.java:639)
	at org.eclipse.core.internal.preferences.EclipsePreferences$2.run(EclipsePreferences.java:753)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.preferences.EclipsePreferences.firePreferenceEvent(EclipsePreferences.java:756)
	at org.eclipse.core.internal.preferences.EclipsePreferences.remove(EclipsePreferences.java:866)
	at org.eclipse.ui.preferences.ScopedPreferenceStore.setValue(ScopedPreferenceStore.java:787)
	at org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIModelController.loadReviewGroups(R4EUIModelController.java:387)
	at org.eclipse.mylyn.reviews.r4e.ui.internal.navigator.ReviewNavigatorView.preferenceChange(ReviewNavigatorView.java:647)
	at org.eclipse.core.internal.preferences.EclipsePreferences$2.run(EclipsePreferences.java:753)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.preferences.EclipsePreferences.firePreferenceEvent(EclipsePreferences.java:756)
	at org.eclipse.core.internal.preferences.EclipsePreferences.put(EclipsePreferences.java:769)
	at org.eclipse.ui.preferences.ScopedPreferenceStore.setValue(ScopedPreferenceStore.java:789)
	at org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIRootElement.createChildren(R4EUIRootElement.java:306)
	at org.eclipse.mylyn.reviews.r4e.ui.internal.commands.NewChildElementHandler.execute(NewChildElementHandler.java:74)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
	at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820)
	at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806)
	at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	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:369)
	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:620)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1384)
Comment 1 Sebastien Dubois CLA 2011-06-28 16:59:24 EDT
The dialog is removed.  The validation code will be refactored into a validation command (as described in bug 350633)