Community
Participate
Working Groups
Build Identifier: Eclipse version: 3.6.2.r362_v20110210 build: M20110210-1200 I am a performance analyst for an adopting product. I recently ran into some errors that I think denotes a lack of thread safety in WST. I have the following two exceptions at very close timestamps. They both failed in the same code. It hints at non-compatible concurrent access. !ENTRY org.eclipse.core.jobs 4 2 2011-03-22 09:52:26.250 !MESSAGE An internal error occurred during: "Building the index". !STACK 0 java.lang.ArrayIndexOutOfBoundsException at org.eclipse.emf.common.notify.impl.BasicNotifierImpl$EAdapterList.data(BasicNotifierImpl.java:176) at org.eclipse.wst.common.internal.emf.utilities.ExtendedEcoreUtil.getAdapter(ExtendedEcoreUtil.java:254) at org.eclipse.wst.common.componentcore.internal.StructureEdit.getEclipseResource(StructureEdit.java:247) at org.eclipse.wst.common.componentcore.internal.impl.ResourceTreeNode.findMatchingVirtualPathsSet(ResourceTreeNode.java:195) at org.eclipse.wst.common.componentcore.internal.impl.ResourceTreeNode.findModuleResourcesSet(ResourceTreeNode.java:178) at org.eclipse.wst.common.componentcore.internal.impl.ResourceTreeNode.findModuleResources(ResourceTreeNode.java:143) at org.eclipse.wst.common.componentcore.internal.resources.VirtualResource.getProjectRelativePaths(VirtualResource.java:132) at org.eclipse.wst.common.componentcore.internal.resources.VirtualResource.getProjectRelativePath(VirtualResource.java:153) at org.eclipse.wst.common.componentcore.internal.resources.VirtualFile.getUnderlyingFile(VirtualFile.java:98) at org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities.getNonBinaryComponentManifest(ManifestUtilities.java:125) at org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities.getManifest(ManifestUtilities.java:81) at org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities.getManifestClasspath(ManifestUtilities.java:147) at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getManifestClasspath(J2EEModuleVirtualComponent.java:241) at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.calculateManifestReferences(J2EEModuleVirtualComponent.java:368) at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.cacheManifestReferences(J2EEModuleVirtualComponent.java:360) at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:144) at org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathContainer.update(J2EEComponentClasspathContainer.java:286) at org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathContainer.install(J2EEComponentClasspathContainer.java:487) at org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathContainer.install(J2EEComponentClasspathContainer.java:510) at org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathInitializer.initialize(J2EEComponentClasspathInitializer.java:48) at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:2707) at org.eclipse.jdt.internal.core.JavaModelManager$11.run(JavaModelManager.java:2613) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975) at org.eclipse.jdt.internal.core.JavaModelManager.initializeAllContainers(JavaModelManager.java:2653) at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1845) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:2705) at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2645) at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2783) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1915) at org.eclipse.jdt.internal.core.JavaModelManager.determineIfOnClasspath(JavaModelManager.java:1003) at org.eclipse.jdt.internal.core.JavaModelManager.create(JavaModelManager.java:888) at org.eclipse.jdt.internal.core.JavaModelManager.create(JavaModelManager.java:829) at org.eclipse.jdt.core.JavaCore.create(JavaCore.java:2590) ... and !ENTRY org.eclipse.core.jobs 4 2 2011-03-22 09:52:26.281 !MESSAGE An internal error occurred during: "Initializing Java Tooling". !STACK 0 java.lang.ArrayIndexOutOfBoundsException at org.eclipse.emf.common.notify.impl.BasicNotifierImpl$EAdapterList.data(BasicNotifierImpl.java:178) at org.eclipse.wst.common.internal.emf.utilities.ExtendedEcoreUtil.getAdapter(ExtendedEcoreUtil.java:254) at org.eclipse.wst.common.componentcore.internal.StructureEdit.getEclipseResource(StructureEdit.java:247) at org.eclipse.wst.common.componentcore.internal.impl.ResourceTreeNode.findMatchingVirtualPathsSet(ResourceTreeNode.java:195) at org.eclipse.wst.common.componentcore.internal.impl.ResourceTreeNode.findModuleResourcesSet(ResourceTreeNode.java:178) at org.eclipse.wst.common.componentcore.internal.impl.ResourceTreeNode.findModuleResources(ResourceTreeNode.java:143) at org.eclipse.wst.common.componentcore.internal.resources.VirtualResource.getProjectRelativePaths(VirtualResource.java:132) at org.eclipse.wst.common.componentcore.internal.resources.VirtualFile.getUnderlyingFiles(VirtualFile.java:104) at org.eclipse.wst.common.componentcore.internal.resources.VirtualFile.getUnderlyingResources(VirtualFile.java:93) at org.eclipse.wst.common.componentcore.internal.resources.VirtualResource.exists(VirtualResource.java:88) at org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities.getNonBinaryComponentManifest(ManifestUtilities.java:124) at org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities.getManifest(ManifestUtilities.java:81) at org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities.getManifestClasspath(ManifestUtilities.java:147) at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getManifestClasspath(J2EEModuleVirtualComponent.java:241) at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.calculateManifestReferences(J2EEModuleVirtualComponent.java:368) at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.cacheManifestReferences(J2EEModuleVirtualComponent.java:360) at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:144) at org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathContainer.update(J2EEComponentClasspathContainer.java:286) at org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathContainer.install(J2EEComponentClasspathContainer.java:487) at org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathContainer.install(J2EEComponentClasspathContainer.java:510) at org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathInitializer.initialize(J2EEComponentClasspathInitializer.java:48) at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:2707) at org.eclipse.jdt.internal.core.JavaModelManager$11.run(JavaModelManager.java:2613) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975) at org.eclipse.jdt.internal.core.JavaModelManager.initializeAllContainers(JavaModelManager.java:2653) at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1845) at org.eclipse.jdt.core.JavaCore.initializeAfterLoad(JavaCore.java:3463) at org.eclipse.jdt.internal.ui.InitializeAfterLoadJob$RealJob.run(InitializeAfterLoadJob.java:35) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) Please see if there is a way to prevent this from happening by some sort of locking. Reproducible: Sometimes