Community
Participate
Working Groups
I20060322 During EclipseCon 2006, Chris Laffra reported that .java files are opened 3 times by the Java indexer while importing a plugin from source. 1. File > Import > Plug-In Development > Plug-ins and Fragments 2. Next 3. Project with source folders 4. Next 5. org.eclipse.ant.core > Add 6. Finish Running under the debugger, one can see that IndexAllProject is added 3 times in the indexer queue.
Actually, IndexAllProject is added only twice, but the source folder is also added so this results in all files in the source folder being indexed 3 times.
The exact scenario is: 1. PDE imports runs in an IWorkspaceRunnable 2. A Java project is created (no classpath is set, so it uses the default) 3. The classpath is changed from /P to /P/src 4. Removing /P triggers a RemoveSourceFolder job to be posted 5. Since the index was not known, ensureReadyToRun() triggers an IndexAllProject (that's 1 indexing of the sources) 6. Adding /P/src triggers a AddSourceFolder job to be posted (2nd indexing of the sources) 7. At the end of the runnable, the DeltaProcessor notices that the project is added and triggers an IndexAllProject (3rd indexing of the sources)
Changed SetClasspathOperation#generateClasspathChangeDeltas() to return immediately if the project was not known to the DeltaProcessingState. It means that the delta and the indexing will be triggered by the DeltaProcessor when it notices that the project is added.
I tried out the fix and it removed *one* file read from the original list of seven. My use case is different from the one originally reported (which was based on importing a plugin with PDE). This time, I just added a space to a Java file and saved it. I did this 2 times, and below are the resulting stack traces. Because the first one is not recorded, have a look at 7-12. "C:\Program Files\Java\jre1.5.0_05\bin\javaw.exe" -javaagent:D:/workspaces/cm/com.ibm.rpet.core/agent.jar -Xbootclasspath/p:D:/workspaces/cm/com.ibm.rpet.core/agent.jar -Xmx768M -classpath d:\wtpM5\eclipse\startup.jar org.eclipse.core.launcher.Main -launcher d:\wtpM5\eclipse\eclipse -name Eclipse -showsplash 600 -product org.eclipse.sdk.ide -data d:\workspaces\ec3 -configuration "file:D:/workspaces/cm/.metadata/.plugins/org.eclipse.pde.core/WTP with RPET/" -dev "file:D:/workspaces/cm/.metadata/.plugins/org.eclipse.pde.core/WTP with RPET/dev.properties" -pdelaunch -os win32 -ws win32 -arch x86 File opened 12 times: D:\workspaces\ec3\org.eclipse.ant.core\src\org\eclipse\ant\core\AntCorePlugin.java **** Trace 1 **** [not recorded] **** Trace 2 **** org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:323) org.eclipse.core.internal.resources.ContentDescriptionManager$LazyFileInputStream.ensureOpened(ContentDescriptionManager.java:154) org.eclipse.core.internal.resources.ContentDescriptionManager$LazyFileInputStream.read(ContentDescriptionManager.java:166) java.io.InputStream.read(Unknown Source) org.eclipse.core.internal.content.LazyInputStream.loadBlock(LazyInputStream.java:99) org.eclipse.core.internal.content.LazyInputStream.ensureAvailable(LazyInputStream.java:64) org.eclipse.core.internal.content.LazyInputStream.read(LazyInputStream.java:119) org.eclipse.core.internal.content.TextContentDescriber.getByteOrderMark(TextContentDescriber.java:65) org.eclipse.core.internal.content.TextContentDescriber.describe(TextContentDescriber.java:49) org.eclipse.core.internal.content.ContentType.describe(ContentType.java:161) org.eclipse.core.internal.content.ContentType.internalGetDescriptionFor(ContentType.java:458) org.eclipse.core.internal.content.ContentTypeCatalog.getDescriptionFor(ContentTypeCatalog.java:314) org.eclipse.core.internal.content.ContentTypeCatalog.getDescriptionFor(ContentTypeCatalog.java:318) org.eclipse.core.internal.content.ContentTypeMatcher.getDescriptionFor(ContentTypeMatcher.java:86) org.eclipse.core.internal.resources.ContentDescriptionManager.readDescription(ContentDescriptionManager.java:400) org.eclipse.core.internal.resources.ContentDescriptionManager.getDescriptionFor(ContentDescriptionManager.java:339) org.eclipse.core.internal.resources.File.internalGetCharset(File.java:253) org.eclipse.core.internal.resources.File.getCharset(File.java:214) org.eclipse.core.internal.resources.File.getCharset(File.java:201) org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1029) org.eclipse.jdt.internal.core.builder.SourceFile.getContents(SourceFile.java:79) org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:9047) org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:9019) org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:7707) org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:408) org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:434) org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:300) org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:237) org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:113) org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:236) org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:164) org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:593) org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:168) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:202) org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:231) org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:234) org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:253) org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:282) org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:204) org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) **** Trace 3 **** org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:323) org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:580) org.eclipse.core.internal.resources.File.getContents(File.java:290) org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1057) org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1034) org.eclipse.jdt.internal.core.builder.SourceFile.getContents(SourceFile.java:79) org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:9047) org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:9019) org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:7707) org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:408) org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:434) org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:300) org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:237) org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:113) org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:236) org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:164) org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:593) org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:168) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:202) org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:231) org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:234) org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:253) org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:282) org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:204) org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) **** Trace 4 **** org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:323) org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:580) org.eclipse.core.internal.resources.File.getContents(File.java:290) org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1057) org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1034) org.eclipse.jdt.internal.core.builder.SourceFile.getContents(SourceFile.java:79) org.eclipse.jdt.internal.compiler.parser.Parser.getMethodBodies(Parser.java:8103) org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:620) org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:448) org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:300) org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:237) org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:113) org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:236) org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:164) org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:593) org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:168) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:202) org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:231) org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:234) org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:253) org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:282) org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:204) org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) **** Trace 5 **** org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:323) org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:580) org.eclipse.core.internal.resources.File.getContents(File.java:290) org.eclipse.core.internal.resources.File.getContents(File.java:279) org.eclipse.ui.internal.editors.quickdiff.LastSaveReferenceProvider.setDocumentContent(LastSaveReferenceProvider.java:367) org.eclipse.ui.internal.editors.quickdiff.LastSaveReferenceProvider.readDocument(LastSaveReferenceProvider.java:252) org.eclipse.ui.internal.editors.quickdiff.LastSaveReferenceProvider.access$0(LastSaveReferenceProvider.java:203) org.eclipse.ui.internal.editors.quickdiff.LastSaveReferenceProvider$ReadJob.run(LastSaveReferenceProvider.java:113) org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) **** Trace 6 **** org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:323) org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:580) org.eclipse.core.internal.resources.File.getContents(File.java:290) org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1057) org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1034) org.eclipse.jdt.internal.core.search.JavaSearchDocument.getCharContents(JavaSearchDocument.java:53) org.eclipse.jdt.internal.core.search.indexing.SourceIndexer.indexDocument(SourceIndexer.java:60) org.eclipse.jdt.internal.core.search.JavaSearchParticipant.indexDocument(JavaSearchParticipant.java:72) org.eclipse.jdt.internal.core.search.indexing.IndexManager.indexDocument(IndexManager.java:322) org.eclipse.jdt.internal.core.search.indexing.IndexManager$1.execute(IndexManager.java:665) org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:372) java.lang.Thread.run(Unknown Source) **** Trace 7 **** org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:323) org.eclipse.core.filesystem.provider.FileStore.copyFile(FileStore.java:215) org.eclipse.core.filesystem.provider.FileStore.copy(FileStore.java:140) org.eclipse.core.internal.filesystem.local.LocalFile.copy(LocalFile.java:98) org.eclipse.core.internal.localstore.BlobStore.addBlob(BlobStore.java:57) org.eclipse.core.internal.localstore.HistoryStore2.addState(HistoryStore2.java:92) org.eclipse.core.internal.localstore.FileSystemResourceManager.write(FileSystemResourceManager.java:866) org.eclipse.core.internal.resources.File.internalSetContents(File.java:322) org.eclipse.core.internal.resources.File.setContents(File.java:362) org.eclipse.core.internal.resources.File.setContents(File.java:462) org.eclipse.core.internal.filebuffers.ResourceTextFileBuffer.commitFileBufferContent(ResourceTextFileBuffer.java:323) org.eclipse.core.internal.filebuffers.ResourceFileBuffer.commit(ResourceFileBuffer.java:322) org.eclipse.jdt.internal.ui.javaeditor.DocumentAdapter.save(DocumentAdapter.java:389) org.eclipse.jdt.internal.core.CommitWorkingCopyOperation.executeOperation(CommitWorkingCopyOperation.java:121) org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:720) org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1733) org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:784) org.eclipse.jdt.internal.core.CompilationUnit.commitWorkingCopy(CompilationUnit.java:340) org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.commitWorkingCopy(CompilationUnitDocumentProvider.java:1188) org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$4.execute(CompilationUnitDocumentProvider.java:1252) org.eclipse.ui.editors.text.TextFileDocumentProvider$DocumentProviderOperation.run(TextFileDocumentProvider.java:135) org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.execute(WorkspaceModifyDelegatingOperation.java:68) org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:100) org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1733) org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:112) org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:73) org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:63) org.eclipse.ui.editors.text.TextFileDocumentProvider.executeOperation(TextFileDocumentProvider.java:451) org.eclipse.ui.editors.text.TextFileDocumentProvider.saveDocument(TextFileDocumentProvider.java:735) org.eclipse.ui.texteditor.AbstractTextEditor.performSave(AbstractTextEditor.java:3799) org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSave(CompilationUnitEditor.java:1344) org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave(CompilationUnitEditor.java:1397) org.eclipse.ui.internal.SaveableHelper$1.run(SaveableHelper.java:130) org.eclipse.ui.internal.SaveableHelper$4.run(SaveableHelper.java:249) org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:360) org.eclipse.jface.operation.ModalContext.run(ModalContext.java:305) org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:739) org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:736) org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2215) org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:255) org.eclipse.ui.internal.SaveableHelper.savePart(SaveableHelper.java:135) org.eclipse.ui.internal.EditorManager.savePart(EditorManager.java:1336) org.eclipse.ui.internal.WorkbenchPage.savePart(WorkbenchPage.java:2771) org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:2784) org.eclipse.ui.internal.SaveAction.run(SaveAction.java:67) org.eclipse.jface.action.Action.runWithEvent(Action.java:492) org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:117) org.eclipse.core.commands.Command.executeWithChecks(Command.java:460) org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:421) org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:160) org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:466) org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:798) org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:845) org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:563) org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:506) org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:122) org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) org.eclipse.swt.widgets.Display.filterEvent(Display.java:978) org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:924) org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:949) org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:934) org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:962) org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:958) org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1272) org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:3336) org.eclipse.swt.widgets.Control.windowProc(Control.java:3236) org.eclipse.swt.widgets.Display.windowProc(Display.java:3965) org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1799) org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2905) org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1899) org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1863) org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:417) org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143) org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:106) org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:99) org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92) org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68) org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:374) org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:169) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) org.eclipse.core.launcher.Main.invokeFramework(Main.java:338) org.eclipse.core.launcher.Main.basicRun(Main.java:282) org.eclipse.core.launcher.Main.run(Main.java:977) org.eclipse.core.launcher.Main.main(Main.java:952) **** Trace 8 **** org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:323) org.eclipse.core.internal.resources.ContentDescriptionManager$LazyFileInputStream.ensureOpened(ContentDescriptionManager.java:154) org.eclipse.core.internal.resources.ContentDescriptionManager$LazyFileInputStream.read(ContentDescriptionManager.java:166) java.io.InputStream.read(Unknown Source) org.eclipse.core.internal.content.LazyInputStream.loadBlock(LazyInputStream.java:99) org.eclipse.core.internal.content.LazyInputStream.ensureAvailable(LazyInputStream.java:64) org.eclipse.core.internal.content.LazyInputStream.read(LazyInputStream.java:119) org.eclipse.core.internal.content.TextContentDescriber.getByteOrderMark(TextContentDescriber.java:65) org.eclipse.core.internal.content.TextContentDescriber.describe(TextContentDescriber.java:49) org.eclipse.core.internal.content.ContentType.describe(ContentType.java:161) org.eclipse.core.internal.content.ContentType.internalGetDescriptionFor(ContentType.java:458) org.eclipse.core.internal.content.ContentTypeCatalog.getDescriptionFor(ContentTypeCatalog.java:314) org.eclipse.core.internal.content.ContentTypeCatalog.getDescriptionFor(ContentTypeCatalog.java:318) org.eclipse.core.internal.content.ContentTypeMatcher.getDescriptionFor(ContentTypeMatcher.java:86) org.eclipse.core.internal.resources.ContentDescriptionManager.readDescription(ContentDescriptionManager.java:400) org.eclipse.core.internal.resources.ContentDescriptionManager.getDescriptionFor(ContentDescriptionManager.java:339) org.eclipse.core.internal.resources.File.internalGetCharset(File.java:253) org.eclipse.core.internal.resources.File.getCharset(File.java:214) org.eclipse.core.internal.resources.File.getCharset(File.java:201) org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1029) org.eclipse.jdt.internal.core.builder.SourceFile.getContents(SourceFile.java:79) org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:9047) org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:9019) org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:7707) org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:408) org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:434) org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:300) org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:237) org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:113) org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:236) org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:164) org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:593) org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:168) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:202) org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:231) org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:234) org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:253) org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:282) org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:204) org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) **** Trace 9 **** org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:323) org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:580) org.eclipse.core.internal.resources.File.getContents(File.java:290) org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1057) org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1034) org.eclipse.jdt.internal.core.builder.SourceFile.getContents(SourceFile.java:79) org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:9047) org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:9019) org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:7707) org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:408) org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:434) org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:300) org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:237) org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:113) org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:236) org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:164) org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:593) org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:168) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:202) org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:231) org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:234) org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:253) org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:282) org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:204) org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) **** Trace 10 **** org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:323) org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:580) org.eclipse.core.internal.resources.File.getContents(File.java:290) org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1057) org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1034) org.eclipse.jdt.internal.core.builder.SourceFile.getContents(SourceFile.java:79) org.eclipse.jdt.internal.compiler.parser.Parser.getMethodBodies(Parser.java:8103) org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:620) org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:448) org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:300) org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:237) org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:113) org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:236) org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:164) org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:593) org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:168) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:202) org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:231) org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:234) org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:253) org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:282) org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:204) org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) **** Trace 11 **** org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:323) org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:580) org.eclipse.core.internal.resources.File.getContents(File.java:290) org.eclipse.core.internal.resources.File.getContents(File.java:279) org.eclipse.ui.internal.editors.quickdiff.LastSaveReferenceProvider.setDocumentContent(LastSaveReferenceProvider.java:367) org.eclipse.ui.internal.editors.quickdiff.LastSaveReferenceProvider.readDocument(LastSaveReferenceProvider.java:252) org.eclipse.ui.internal.editors.quickdiff.LastSaveReferenceProvider.access$0(LastSaveReferenceProvider.java:203) org.eclipse.ui.internal.editors.quickdiff.LastSaveReferenceProvider$ReadJob.run(LastSaveReferenceProvider.java:113) org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) **** Trace 12 **** org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:323) org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:580) org.eclipse.core.internal.resources.File.getContents(File.java:290) org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1057) org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1034) org.eclipse.jdt.internal.core.search.JavaSearchDocument.getCharContents(JavaSearchDocument.java:53) org.eclipse.jdt.internal.core.search.indexing.SourceIndexer.indexDocument(SourceIndexer.java:60) org.eclipse.jdt.internal.core.search.JavaSearchParticipant.indexDocument(JavaSearchParticipant.java:72) org.eclipse.jdt.internal.core.search.indexing.IndexManager.indexDocument(IndexManager.java:322) org.eclipse.jdt.internal.core.search.indexing.IndexManager$1.execute(IndexManager.java:665) org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:372) java.lang.Thread.run(Unknown Source)
The good news is that the indexer appears only once in the stack traces (trace 12). So THIS bug is really fixed. For other stack traces, - trace 7 is the editor writing the contents - trace 8 is the Java builder reading the charset - trace 9 is the Java builder reading the contents for diet parsing - trace 10 is the Java builder reading the contents for method bodies parsing - trace 11 is the editor reading the contents for quick diff
Entered bug 133478 (against editor) and bug 133479 (against Java builder)
Would there be an opportunity to avoid the multiple reading that happens inside the Java builder? Each time, the entire file is read and tokenized. Should another bug be opened for that?
Verified for 3.2M6 using build I20060327-0010. (Admitting that we can only save the first IndexAllProject.)
Re: comment 7 - Chris, pls check bug 133479.