Bug 66296 - Slow closing editor after startup
Summary: Slow closing editor after startup
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows 2000
: P3 normal (vote)
Target Milestone: 3.1 M3   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-06-09 10:06 EDT by Nick Edgar CLA
Modified: 2004-11-04 06:29 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 Nick Edgar CLA 2004-06-09 10:06:09 EDT
build I20040609-0800

- started eclipse after switching to new build
- I had two editors open in the Java perspective
- closed one
- it took several seconds
- CPU was busy for many seconds after that
- Ctrl+Break in the console shows only the reconcilers and indexer doing
interesting work:

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=5 tid=0x213e3008
nid=0x82c runnable [2232f000..2232fd90]
        at
org.eclipse.jdt.internal.compiler.parser.Parser.initialize(Parser.java:5034)
        at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:5528)
        at
org.eclipse.jdt.internal.compiler.parser.SourceTypeConverter.convert(SourceTypeConverter.java:158)
        at
org.eclipse.jdt.internal.compiler.parser.SourceTypeConverter.convert(SourceTypeConverter.java:266)
        at
org.eclipse.jdt.internal.compiler.parser.SourceTypeConverter.convert(SourceTypeConverter.java:128)
        at
org.eclipse.jdt.internal.compiler.parser.SourceTypeConverter.buildCompilationUnit(SourceTypeConverter.java:83)
        at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.accept(CompilationUnitProblemFinder.java:100)
        at
org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:113)
        at
org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:170)
        at
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findOnDemandImport(CompilationUnitScope.java:361)
        at
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSingleTypeImport(CompilationUnitScope.java:419)
        at
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInImports(CompilationUnitScope.java:297)
        at
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes(CompilationUnitScope.java:347)
        at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:557)
        at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:603)
        at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:166)
        at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:206)
        at
org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:76)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:739)
        at
org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1098)
        at
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:88)
        - locked <0x11ee6048> (a org.eclipse.jdt.internal.core.CompilationUnit)
        at
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.initialReconcile(JavaReconcilingStrategy.java:156)
        at
org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.initialReconcile(CompositeReconcilingStrategy.java:114)

        at
org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.initialReconcile(JavaCompositeReconcilingStrategy.j
ava:122)
        at
org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:104)
        at
org.eclipse.jdt.internal.ui.text.JavaReconciler.initialProcess(JavaReconciler.java:280)
        at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:166)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x212d0868
nid=0x810 runnable [222ef000..222efd90]
        at
org.eclipse.jdt.internal.compiler.parser.Parser.pushOnIntStack(Parser.java:5901)
        at
org.eclipse.jdt.internal.compiler.parser.Parser.consumeToken(Parser.java:3990)
        at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:5355)
        at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:5704)
        at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:5669)
        at
org.eclipse.jdt.internal.compiler.SourceElementParser.parseCompilationUnit(SourceElementParser.java:1133)
        at
org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:120)
        at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:183)
        at
org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:572)
        at
org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:309)
        at
org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:295)
        at
org.eclipse.jdt.internal.core.JavaElement.getChildren(JavaElement.java:250)
        at
org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType(JavaElement.java:264)
        at
org.eclipse.jdt.internal.core.CompilationUnit.getTypes(CompilationUnit.java:822)
        at
org.eclipse.jdt.internal.core.NameLookup.seekTypesInSourcePackage(NameLookup.java:697)
        at org.eclipse.jdt.internal.core.NameLookup.seekTypes(NameLookup.java:554)
        at org.eclipse.jdt.internal.core.NameLookup.findType(NameLookup.java:384)
        at org.eclipse.jdt.internal.core.NameLookup.findType(NameLookup.java:355)
        at
org.eclipse.jdt.internal.core.SearchableEnvironment.find(SearchableEnvironment.java:78)
        at
org.eclipse.jdt.internal.core.SearchableEnvironment.findType(SearchableEnvironment.java:158)
        at
org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:101)
        at
org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:170)
        at
org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:1448)
        at
org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:820)
        at
org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperclass(ClassScope.java:607)
        at
org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:700)
        at
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:242)
        at
org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:177)
        at
org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:206)
        at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.accept(CompilationUnitProblemFinder.java:110)
        at
org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:113)
        at
org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:170)
        at
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findOnDemandImport(CompilationUnitScope.java:361)
        at
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSingleTypeImport(CompilationUnitScope.java:419)
        at
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInImports(CompilationUnitScope.java:297)
        at
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes(CompilationUnitScope.java:347)
        at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:557)
        at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:603)
        at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:166)
        at
org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:206)
        at
org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:76)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700)
        at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:739)
        at
org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1098)
        at
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:88)
        - locked <0x1181e6d8> (a org.eclipse.jdt.internal.core.CompilationUnit)
        at
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.initialReconcile(JavaReconcilingStrategy.java:156)
        at
org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.initialReconcile(CompositeReconcilingStrategy.java:114)

        at
org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.initialReconcile(JavaCompositeReconcilingStrategy.j
ava:122)
        at
org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:104)
        at
org.eclipse.jdt.internal.ui.text.JavaReconciler.initialProcess(JavaReconciler.java:280)
        at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:166)

"Worker-0" prio=5 tid=0x2104fbd0 nid=0x6c0 waiting on condition [222af000..222afd90]
        at java.lang.Thread.sleep(Native Method)
        at
org.eclipse.jdt.internal.core.search.processing.JobManager$1$ProgressJob.run(JobManager.java:321)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66)

"Java indexing" daemon prio=4 tid=0x20f12d58 nid=0x804 runnable [2226f000..2226fd90]
        at java.util.zip.Inflater.inflateBytes(Native Method)
        at java.util.zip.Inflater.inflate(Inflater.java:219)
        - locked <0x13471820> (a java.util.zip.Inflater)
        at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:128)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:220)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:277)
        - locked <0x1024bfe8> (a java.io.BufferedInputStream)
        at
org.eclipse.jdt.internal.compiler.util.Util.getInputStreamAsByteArray(Util.java:260)
        at
org.eclipse.jdt.internal.compiler.util.Util.getZipEntryByteContent(Util.java:384)
        at
org.eclipse.jdt.internal.core.search.indexing.AddJarFileToIndex.execute(AddJarFileToIndex.java:171)
        at
org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:367)
        at java.lang.Thread.run(Thread.java:534)
Comment 1 Dani Megert CLA 2004-07-23 11:02:38 EDT
We tell the reconciler to stop by setting the cancel flag on the progress monitor.
Comment 2 Dani Megert CLA 2004-07-23 11:05:59 EDT
Just to clarify what I meant is we set the flag on
ICompilationUnit.reconcile(...).
Comment 3 Jerome Lanneluc CLA 2004-10-15 06:21:35 EDT
Cancel was not honoured neither during reconciling, nor during becomeWorkingCopy.

Changed CompilationUnitProblemFinder to use a CancelableNameEnvironment and a
CancelableProblemFactory.

Added regression test ReconcilerTests#testCancel and
WorkingCopyOwnerTests#testBecomeWorkingCopy4
Comment 4 David Audel CLA 2004-11-04 06:29:29 EST
Verified for 3.1M3 with build I200411040100