Bug 578057 - Eclipse takes forever to save file with many organized imports
Summary: Eclipse takes forever to save file with many organized imports
Status: NEW
Alias: None
Product: JDT
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 4.22   Edit
Hardware: PC Windows 10
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: JDT-UI-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-01-05 08:16 EST by Ed Willink CLA
Modified: 2023-12-28 01:18 EST (History)
0 users

See Also:


Attachments
thread dump (70.67 KB, text/plain)
2022-01-05 08:16 EST, Ed Willink CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
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.