Bug 578057

Summary: Eclipse takes forever to save file with many organized imports
Product: [Eclipse Project] JDT Reporter: Ed Willink <ed>
Component: UIAssignee: JDT-UI-Inbox <jdt-ui-inbox>
Status: NEW --- QA Contact:
Severity: normal    
Priority: P3    
Version: 4.22   
Target Milestone: ---   
Hardware: PC   
OS: Windows 10   
Whiteboard:
Attachments:
Description Flags
thread dump none

Description Ed Willink CLA 2022-01-05 08:16:41 EST
Created attachment 287780 [details]
thread dump

Version: 2021-12 (4.22)
Build id: I20211124-1800

/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/model/OCLstdlib.java is an autogenerated 3500 line file for which I habitually perform a dummy edit after regeneration so that Java save actions minimize GIT changes. In particular about 50 or so imports are organized free of * imports.

After waiting 15 minutes I had to kill Eclipse since the save was hanging.

(After restarting Eclipse a similar dummy edit took  barely a second once restart builds had settled. So no, not reproducible beyond the stack trace.)

A couple of thread dumps were very similar. Relevant part below, full thread dump attached.

"main" #1 prio=6 os_prio=0 cpu=3858546.88ms elapsed=91145.30s tid=0x0000025ea5409800 nid=0x3174 runnable  [0x000000d8c04f9000]
   java.lang.Thread.State: RUNNABLE
        at org.eclipse.jdt.internal.core.JavaElement.equals(JavaElement.java:184)
        at org.eclipse.jdt.internal.core.SourceRefElement.equals(SourceRefElement.java:89)
        at org.eclipse.jdt.internal.core.SourceField.equals(SourceField.java:35)
        at org.eclipse.jdt.internal.core.JavaElement.equals(JavaElement.java:185)
        at org.eclipse.jdt.internal.core.SourceRefElement.equals(SourceRefElement.java:89)
        at org.eclipse.jdt.internal.core.Annotation.equals(Annotation.java:59)
        at java.util.HashMap$TreeNode.find(java.base@11.0.13/HashMap.java:1931)
        at java.util.HashMap$TreeNode.find(java.base@11.0.13/HashMap.java:1941)
        at java.util.HashMap$TreeNode.find(java.base@11.0.13/HashMap.java:1941)
        at java.util.HashMap$TreeNode.find(java.base@11.0.13/HashMap.java:1941)
        at java.util.HashMap$TreeNode.find(java.base@11.0.13/HashMap.java:1941)
        at java.util.HashMap$TreeNode.find(java.base@11.0.13/HashMap.java:1941)
        at java.util.HashMap$TreeNode.find(java.base@11.0.13/HashMap.java:1941)
        at java.util.HashMap$TreeNode.find(java.base@11.0.13/HashMap.java:1941)
        at java.util.HashMap$TreeNode.putTreeVal(java.base@11.0.13/HashMap.java:2058)
        at java.util.HashMap.putVal(java.base@11.0.13/HashMap.java:634)
        at java.util.HashMap.put(java.base@11.0.13/HashMap.java:608)
        at org.eclipse.jdt.internal.core.JavaModelCache.putInfo(JavaModelCache.java:252)
        at org.eclipse.jdt.internal.core.JavaModelManager.putInfos(JavaModelManager.java:4076)
        - locked <0x00000007032e3490> (a org.eclipse.jdt.internal.core.JavaModelManager)
        at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:620)
        at org.eclipse.jdt.internal.core.BecomeWorkingCopyOperation.executeOperation(BecomeWorkingCopyOperation.java:43)
        at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:740)
        at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:806)
        at org.eclipse.jdt.internal.core.CompilationUnit.getWorkingCopy(CompilationUnit.java:1041)
        at org.eclipse.jdt.internal.core.CompilationUnit.getWorkingCopy(CompilationUnit.java:1007)
        at org.eclipse.jdt.internal.corext.util.JavaModelUtil.getStaticImportFavorites(JavaModelUtil.java:1270)
        at org.eclipse.jdt.core.manipulation.OrganizeImportsOperation.addStaticImports(OrganizeImportsOperation.java:686)
        at org.eclipse.jdt.core.manipulation.OrganizeImportsOperation.createTextEdit(OrganizeImportsOperation.java:599)
        at org.eclipse.jdt.internal.corext.fix.ImportsFix.createCleanUp(ImportsFix.java:51)
        at org.eclipse.jdt.internal.ui.fix.ImportsCleanUp.createFix(ImportsCleanUp.java:62)
        at org.eclipse.jdt.internal.corext.fix.CleanUpRefactoring.calculateChange(CleanUpRefactoring.java:768)
        at org.eclipse.jdt.internal.corext.fix.CleanUpPostSaveListener.saved(CleanUpPostSaveListener.java:384)
        at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$4.run(CompilationUnitDocumentProvider.java:1642)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
        at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.notifyPostSaveListeners(CompilationUnitDocumentProvider.java:1636)
        at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.commitWorkingCopy(CompilationUnitDocumentProvider.java:1420)
        at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$3.execute(CompilationUnitDocumentProvider.java:1495)
        at org.eclipse.ui.editors.text.TextFileDocumentProvider$DocumentProviderOperation.run(TextFileDocumentProvider.java:133)
        at org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.execute(WorkspaceModifyDelegatingOperation.java:71)
        at org.eclipse.ui.actions.WorkspaceModifyOperation.lambda$0(WorkspaceModifyOperation.java:110)
        at org.eclipse.ui.actions.WorkspaceModifyOperation$$Lambda$1717/0x0000000801b0bc40.run(Unknown Source)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2338)
        at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:131)
        - locked <0x0000000763f60d68> (a org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation)
        at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:76)
        at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:66)
        at org.eclipse.ui.editors.text.TextFileDocumentProvider.executeOperation(TextFileDocumentProvider.java:461)
        at org.eclipse.ui.editors.text.TextFileDocumentProvider.saveDocument(TextFileDocumentProvider.java:764)
        at org.eclipse.ui.texteditor.AbstractTextEditor.performSave(AbstractTextEditor.java:5003)
        at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSave(CompilationUnitEditor.java:1262)
        at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave(CompilationUnitEditor.java:1316)
        - locked <0x000000075b000060> (a org.eclipse.jdt.internal.core.CompilationUnit)
        at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.doSave(AbstractTextEditor.java:7147)
        at org.eclipse.ui.Saveable.doSave(Saveable.java:213)
Comment 1 Eclipse Genie CLA 2023-12-27 15:42:52 EST
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet.

If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.
Comment 2 Ed Willink CLA 2023-12-28 01:18:34 EST
Cannot be stale until triaged by a relevant committer.