Community
Participate
Working Groups
In a workspace with outdated indexes (runtime workspace after switching to a new base build) and with the Gerrit for bug 357795 (I think that shouldn't matter), I tried to save a file with a structure similar to this: import static java.util.SourCream.*; public class Try { void foo() { azerty("bad", false); } } The UI thread locked up because the Organize Imports Clean Up that was configured as Save Action required an up-to-date index. That would be OK-ish, but there must be a way for the user to cancel the operation. A progress monitor must be passed through these 3 APIs: ImportsFix.createCleanUp(CompilationUnit, CodeGenerationSettings, boolean, RefactoringStatus) line: 52 ImportsCleanUp.createFix(CleanUpContext) line: 59 CleanUpRefactoring.calculateChange(CleanUpContext, ICleanUp[], List<ICleanUp>, HashSet<ICleanUp>) line: 789 ICleanUp#createFix(..) must be deprecated and replaced by a default method that takes an IProgressMonitor. The reason for the excessive delay is probably bug 474045. Complete stacktrace: at org.eclipse.jdt.internal.core.JavaModelManager.secondaryTypes(JavaModelManager.java:4566) at org.eclipse.jdt.internal.core.NameLookup.findSecondaryType(NameLookup.java:592) at org.eclipse.jdt.internal.core.NameLookup.findType(NameLookup.java:773) at org.eclipse.jdt.internal.core.NameLookup.findType(NameLookup.java:663) at org.eclipse.jdt.internal.core.NameLookup.findType(NameLookup.java:845) at org.eclipse.jdt.internal.core.JavaProject.findType(JavaProject.java:1277) at org.eclipse.jdt.internal.core.JavaProject.findType(JavaProject.java:1366) at org.eclipse.jdt.internal.core.JavaProject.findType(JavaProject.java:1270) at org.eclipse.jdt.internal.core.dom.rewrite.imports.StaticConflictingSimpleNameFinder.findConflictingSimpleNames(StaticConflictingSimpleNameFinder.java:48) at org.eclipse.jdt.internal.core.dom.rewrite.imports.ConflictIdentifier.findConflictingSimpleNames(ConflictIdentifier.java:158) at org.eclipse.jdt.internal.core.dom.rewrite.imports.ConflictIdentifier.identifyConflicts(ConflictIdentifier.java:110) at org.eclipse.jdt.internal.core.dom.rewrite.imports.ImportRewriteAnalyzer.computeImportOrder(ImportRewriteAnalyzer.java:561) at org.eclipse.jdt.internal.core.dom.rewrite.imports.ImportRewriteAnalyzer.analyzeRewrite(ImportRewriteAnalyzer.java:540) at org.eclipse.jdt.core.dom.rewrite.ImportRewrite.rewriteImports(ImportRewrite.java:1176) at org.eclipse.jdt.internal.corext.codemanipulation.OrganizeImportsOperation.createTextEdit(OrganizeImportsOperation.java:596) at org.eclipse.jdt.internal.corext.fix.ImportsFix.createCleanUp(ImportsFix.java:52) at org.eclipse.jdt.internal.ui.fix.ImportsCleanUp.createFix(ImportsCleanUp.java:59) at org.eclipse.jdt.internal.corext.fix.CleanUpRefactoring.calculateChange(CleanUpRefactoring.java:789) at org.eclipse.jdt.internal.corext.fix.CleanUpPostSaveListener.saved(CleanUpPostSaveListener.java:387) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$5.run(CompilationUnitDocumentProvider.java:1639) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.notifyPostSaveListeners(CompilationUnitDocumentProvider.java:1633) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.commitWorkingCopy(CompilationUnitDocumentProvider.java:1413) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$4.execute(CompilationUnitDocumentProvider.java:1491) at org.eclipse.ui.editors.text.TextFileDocumentProvider$DocumentProviderOperation.run(TextFileDocumentProvider.java:130) at org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.execute(WorkspaceModifyDelegatingOperation.java:67) at org.eclipse.ui.actions.WorkspaceModifyOperation.lambda$0(WorkspaceModifyOperation.java:107) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2240) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2267) at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:128) at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:73) at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:63) at org.eclipse.ui.editors.text.TextFileDocumentProvider.executeOperation(TextFileDocumentProvider.java:458) at org.eclipse.ui.editors.text.TextFileDocumentProvider.saveDocument(TextFileDocumentProvider.java:761) at org.eclipse.ui.texteditor.AbstractTextEditor.performSave(AbstractTextEditor.java:5016) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSave(CompilationUnitEditor.java:1251) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave(CompilationUnitEditor.java:1305) at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.doSave(AbstractTextEditor.java:7108) at org.eclipse.ui.Saveable.doSave(Saveable.java:216) at org.eclipse.ui.internal.SaveableHelper.doSaveModel(SaveableHelper.java:357) at org.eclipse.ui.internal.SaveableHelper$3.run(SaveableHelper.java:201) at org.eclipse.ui.internal.SaveableHelper$5.run(SaveableHelper.java:285) at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:460) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:368) at org.eclipse.ui.internal.WorkbenchWindow$14.run(WorkbenchWindow.java:2181) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2177) at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:293) at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:271) at org.eclipse.ui.internal.SaveableHelper.saveModels(SaveableHelper.java:213) at org.eclipse.ui.internal.SaveableHelper.savePart(SaveableHelper.java:148) at org.eclipse.ui.internal.WorkbenchPage.saveSaveable(WorkbenchPage.java:3896) at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:3910) at org.eclipse.ui.internal.handlers.SaveHandler.execute(SaveHandler.java:54) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:295) at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90) at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56) at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:282) at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:264) at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132) at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:152) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:494) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:491) at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:210) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:286) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:507) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:558) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:378) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$0(KeyBindingDispatcher.java:324) at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:86) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1269) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1080) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1105) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1090) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1132) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1128) at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1550) at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4821) at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:349) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4702) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:344) at org.eclipse.swt.widgets.Display.windowProc(Display.java:5061) at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2446) at org.eclipse.swt.internal.BidiUtil.windowProc(BidiUtil.java:701) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2552) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3777) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1122) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1023) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:157) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:691) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:604) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:670) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:609) at org.eclipse.equinox.launcher.Main.run(Main.java:1516) at org.eclipse.equinox.launcher.Main.main(Main.java:1489)
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.
Running into this semi-frequently now due to Bug 578359; would love to see this operation moved off of the UI thread. Eclipse occasionally freezing for 30+ minutes when you save a file is pretty disruptive.