Bug 3129 - (136) exception on catching up (1GKKG2J)
Summary: (136) exception on catching up (1GKKG2J)
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Resources (show other bugs)
Version: 2.0   Edit
Hardware: All Windows 2000
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Jeff McAffer CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2001-10-10 22:49 EDT by Jeff McAffer CLA
Modified: 2001-11-20 10:11 EST (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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.