Bug 3129

Summary: (136) exception on catching up (1GKKG2J)
Product: [Eclipse Project] Platform Reporter: Jeff McAffer <jeffmcaffer>
Component: ResourcesAssignee: Jeff McAffer <jeffmcaffer>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3    
Version: 2.0   
Target Milestone: ---   
Hardware: All   
OS: Windows 2000   
Whiteboard:

Description Jeff McAffer CLA 2001-10-10 22:49:58 EDT
AK (9/24/2001 6:30:21 PM)
in event loop.
i was catching up with stream
hard to give detailed steps, really - never seen it before

Log: Mon Sep 24 18:29:13 GMT+02:00 2001
4 org.eclipse.ui 0 Element not found: /org.eclipse.jdt.ui/Eclipse Java UI/org/eclipse/jdt/internal/ui/reorg.
java.lang.IllegalArgumentException: Element not found: /org.eclipse.jdt.ui/Eclipse Java UI/org/eclipse/jdt/internal/ui/reorg.
	at org.eclipse.core.internal.watson.ElementTree.elementNotFound(ElementTree.java(Compiled Code))
	at org.eclipse.core.internal.watson.ElementTree.getChildIDs(ElementTree.java(Compiled Code))
	at org.eclipse.core.internal.resources.Container.getChildren(Container.java(Compiled Code))
	at org.eclipse.core.internal.resources.Container.getChildren(Container.java(Compiled Code))
	at org.eclipse.core.internal.resources.Container.getChildren(Container.java(Compiled Code))
	at org.eclipse.core.internal.resources.Container.members(Container.java(Compiled Code))
	at org.eclipse.core.internal.resources.Resource.accept(Resource.java(Compiled Code))
	at org.eclipse.core.internal.resources.Resource.accept(Resource.java(Compiled Code))
	at org.eclipse.core.internal.resources.Resource.accept(Resource.java(Compiled Code))
	at org.eclipse.core.internal.resources.Resource.accept(Resource.java(Compiled Code))
	at org.eclipse.core.internal.resources.Resource.accept(Resource.java(Compiled Code))
	at org.eclipse.core.internal.resources.Resource.accept(Resource.java(Compiled Code))
	at org.eclipse.core.internal.resources.Resource.accept(Resource.java(Compiled Code))
	at org.eclipse.vcm.internal.ui.VCMLabelDecorator.isOutgoing(VCMLabelDecorator.java(Compiled Code))
	at org.eclipse.vcm.internal.ui.VCMLabelDecorator.decorateText(VCMLabelDecorator.java(Compiled Code))
	at org.eclipse.jface.viewers.DecoratingLabelProvider.getText(DecoratingLabelProvider.java(Compiled Code))
	at org.eclipse.jface.viewers.TreeViewer.doUpdateItem(TreeViewer.java(Compiled Code))
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java(Compiled Code))
	at org.eclipse.jface.viewers.StructuredViewer.update(StructuredViewer.java(Compiled Code))
	at org.eclipse.jface.viewers.StructuredViewer.update(StructuredViewer.java(Compiled Code))
	at org.eclipse.jface.viewers.StructuredViewer.handleLabelProviderChanged(StructuredViewer.java(Compiled Code))
	at org.eclipse.jface.viewers.ContentViewer$1.labelProviderChanged(ContentViewer.java(Compiled Code))
	at org.eclipse.jface.viewers.LabelProvider.fireLabelProviderChanged(LabelProvider.java(Compiled Code))
	at org.eclipse.vcm.internal.ui.VCMLabelDecorator.fireLabelUpdates(VCMLabelDecorator.java(Compiled Code))
	at org.eclipse.vcm.internal.ui.VCMLabelDecorator$5.run(VCMLabelDecorator.java:285)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java(Compiled Code))
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java(Compiled Code))
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java(Compiled Code))
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:258)
	at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:335)
	at org.eclipse.vcm.internal.ui.sync.SyncCompareInput.run(SyncCompareInput.java:528)
	at org.eclipse.vcm.internal.ui.sync.SyncCompareInput.sync(SyncCompareInput.java:556)
	at org.eclipse.vcm.internal.ui.sync.MergeAction.run(MergeAction.java:71)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:407)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetEvent(ActionContributionItem.java(Compiled Code))
	at org.eclipse.jface.action.ActionContributionItem$ActionListener.handleEvent(ActionContributionItem.java(Compiled Code))
	at org.eclipse.jface.action.ActionContributionItem$ActionListener.handleEvent(ActionContributionItem.java(Compiled Code))
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java(Compiled Code))
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java(Compiled Code))
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:656)
	at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:815)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:151)
	at org.eclipse.core.launcher.Main.run(Main.java:433)
	at org.eclipse.core.launcher.Main.main(Main.java:306)


NOTES:

EG (9/24/2001 8:05:36 AM)
	haven't seen this neither
	moving to CORE fyi.

JohnA (9/25/2001 10:30:54 AM)
	This could be a concurrency problem.  Since the tree is not locked during visitor traversal,
	another thread could delete a container between the existence check in Container#members() 
	and ElementTree#getChildren(), causing the above exception.

	Minimally we should be catching the IllegalArgumentException thrown by the tree layer
	and throwing a core exception.  At least then a message would get back to the user saying
	"Resource /foo/... does not exist", and they would know to redo the operation they were trying.
Comment 1 DJ Houghton CLA 2001-10-24 06:45:18 EDT
PRODUCT VERSION:
	136

Comment 2 John Arthorne CLA 2001-11-15 12:18:06 EST
Added some protective code to make it safe during concurrent access. Since this 
method can be called from many places, some of which don't expect exceptions, I 
just return an empty set of children if the resource has been replaced 
concurrently during the call. This way visitors won't fail unneccesarily.

Tested and released into HEAD.  No readme or buildnotes needed.
Comment 3 Rodrigo Peretti CLA 2001-11-20 10:11:04 EST
Fixed in v211.