Bug 133334 - Indexing project 3 times during import
Summary: Indexing project 3 times during import
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.2 M6   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-03-27 05:16 EST by Jerome Lanneluc CLA
Modified: 2006-03-28 07:52 EST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jerome Lanneluc CLA 2006-03-27 05:16:55 EST
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.
Comment 1 Jerome Lanneluc CLA 2006-03-27 08:59:26 EST
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.
Comment 2 Jerome Lanneluc CLA 2006-03-27 09:03:23 EST
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)
Comment 3 Jerome Lanneluc CLA 2006-03-27 09:09:45 EST
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.
Comment 4 Chris Laffra CLA 2006-03-27 22:11:45 EST
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)
Comment 5 Jerome Lanneluc CLA 2006-03-28 04:22:18 EST
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
Comment 6 Jerome Lanneluc CLA 2006-03-28 04:28:54 EST
Entered bug 133478 (against editor) and bug 133479 (against Java builder)
Comment 7 Chris Laffra CLA 2006-03-28 07:34:35 EST
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?
Comment 8 Maxime Daniel CLA 2006-03-28 07:43:44 EST
Verified for 3.2M6 using build I20060327-0010.
(Admitting that we can only save the first IndexAllProject.)
Comment 9 Philipe Mulet CLA 2006-03-28 07:52:22 EST
Re: comment 7 - Chris, pls check bug 133479.