Bug 550737

Summary: Cleanup action create UI freezes > 300 seconds
Product: [Eclipse Project] JDT Reporter: Lars Vogel <Lars.Vogel>
Component: UIAssignee: Paul Pazderski <paul-eclipse>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: Lars.Vogel, paul-eclipse, rgrunber
Version: 4.13   
Target Milestone: 4.14 M1   
Hardware: PC   
OS: Linux   
See Also: https://git.eclipse.org/r/148885
https://bugs.eclipse.org/bugs/show_bug.cgi?id=550744
https://git.eclipse.org/c/jdt/eclipse.jdt.ui.git/commit/?id=9d84dfa387768e9d3e0526028930c7bbf5f0f6e3
Whiteboard:
Bug Depends on:    
Bug Blocks: 550209    

Description Lars Vogel CLA 2019-09-04 06:08:43 EDT
I see frequently UI freezes due to the code cleanup actions. 

I suggest to cancel the cleanup actions if they run to long.


How to reproduce:

1.) Activate cleanup actions
2.) Copy a Java file
3.) In this new file repeat at least 5 times: press Ctrl+A, Ctrl+C, Ctrl+V,Ctrl+V,Ctrl+V

Save

Stack Trace
	at org.eclipse.jface.text.TreeLineTracker.getLineNumberOfOffset(TreeLineTracker.java:1122)
	at org.eclipse.jface.text.AbstractLineTracker.getLineNumberOfOffset(AbstractLineTracker.java:154)
	at org.eclipse.jface.text.AbstractDocument.getLineOfOffset(AbstractDocument.java:871)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.nextToken(JavaIndenter.java:1998)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.nextToken(JavaIndenter.java:1983)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.skipScope(JavaIndenter.java:2165)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.looksLikeArrayInitializerIntro(JavaIndenter.java:1769)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.skipToStatementStart(JavaIndenter.java:1360)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.handleScopeIntroduction(JavaIndenter.java:1715)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.findReferencePosition(JavaIndenter.java:1056)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.findReferencePosition(JavaIndenter.java:830)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.getReferenceIndentation(JavaIndenter.java:456)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.computeIndentation(JavaIndenter.java:489)
	at org.eclipse.jdt.internal.ui.text.JavaIndenter.computeIndentation(JavaIndenter.java:475)
	at org.eclipse.jdt.internal.ui.actions.IndentAction.computeReplaceData(IndentAction.java:353)
	at org.eclipse.jdt.internal.ui.actions.IndentAction.indent(IndentAction.java:271)
	at org.eclipse.jdt.internal.corext.fix.CodeFormatFix.createCleanUp(CodeFormatFix.java:148)
	at org.eclipse.jdt.internal.ui.fix.CodeFormatCleanUp.createFix(CodeFormatCleanUp.java:64)
	at org.eclipse.jdt.internal.corext.fix.CleanUpRefactoring.calculateChange(CleanUpRefactoring.java:792)
	at org.eclipse.jdt.internal.corext.fix.CleanUpPostSaveListener.saved(CleanUpPostSaveListener.java:390)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$5.run(CompilationUnitDocumentProvider.java:1639)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	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: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$1188/0x000000080215e840.run(Unknown Source)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2295)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2322)
	at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:131)
	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:5052)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSave(CompilationUnitEditor.java:1275)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave(CompilationUnitEditor.java:1329)
	at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.doSave(AbstractTextEditor.java:7181)
	at org.eclipse.ui.Saveable.doSave(Saveable.java:213)
	at org.eclipse.ui.internal.SaveableHelper.doSaveModel(SaveableHelper.java:333)
	at org.eclipse.ui.internal.SaveableHelper.lambda$1(SaveableHelper.java:196)
	at org.eclipse.ui.internal.SaveableHelper$$Lambda$1195/0x000000080215d440.run(Unknown Source)
	at org.eclipse.ui.internal.SaveableHelper.lambda$3(SaveableHelper.java:271)
	at org.eclipse.ui.internal.SaveableHelper$$Lambda$1196/0x000000080215c840.run(Unknown Source)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:436)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:352)
	at org.eclipse.ui.internal.WorkbenchWindow.lambda$5(WorkbenchWindow.java:2364)
	at org.eclipse.ui.internal.WorkbenchWindow$$Lambda$781/0x0000000801d5cc40.run(Unknown Source)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:72)
	at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2362)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:278)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:260)
	at org.eclipse.ui.internal.SaveableHelper.saveModels(SaveableHelper.java:207)
	at org.eclipse.ui.internal.SaveableHelper.savePart(SaveableHelper.java:150)
	at org.eclipse.ui.internal.WorkbenchPage.saveSaveable(WorkbenchPage.java:3830)
	at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:3843)
	at org.eclipse.ui.internal.handlers.SaveHandler.execute(SaveHandler.java:57)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:283)
	at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:95)
	at jdk.internal.reflect.GeneratedMethodAccessor180.invoke(Unknown Source)
	at java.base@12.0.1/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base@12.0.1/java.lang.reflect.Method.invoke(Method.java:567)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:318)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:252)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:173)
	at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:156)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:498)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:487)
	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:308)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:584)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:653)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:443)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$2(KeyBindingDispatcher.java:386)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:96)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1836)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1404)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1431)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1414)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1455)
	at org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:819)
	at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:4012)
	at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:857)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2243)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:6846)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5842)
	at org.eclipse.swt.internal.gtk.GTK._gtk_main_do_event(Native Method)
	at org.eclipse.swt.internal.gtk.GTK.gtk_main_do_event(GTK.java:4154)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1474)
	at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
	at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1603)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4404)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633)
	at org.eclipse.ui.internal.Workbench$$Lambda$122/0x00000008013bdc40.run(Unknown Source)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base@12.0.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base@12.0.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base@12.0.1/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base@12.0.1/java.lang.reflect.Method.invoke(Method.java:567)
	at app//org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660)
	at app//org.eclipse.equinox.launcher.Main.basicRun(Main.java:597)
	at app//org.eclipse.equinox.launcher.Main.run(Main.java:1468)
	at app//org.eclipse.equinox.launcher.Main.main(Main.java:1441)
Comment 1 Lars Vogel CLA 2019-09-04 06:11:35 EDT
Roland, can you have a look? AFAIR you were working on code completion performance with a timeout before.

Also adding Paul, who improved performance in the text framework in the past.
Comment 2 Paul Pazderski CLA 2019-09-04 06:58:33 EDT
A possible performance improvement: from your stacktrace it spent its time in TreeLineTracker. This class is already really fast but most requests are still not trivial.
JavaIndenter requests the line every time the position is changed which is done (I assume) much more often than the line is actually required to know.
Improvement is therefor to remove the line field and calculate it on demand.
Comment 3 Eclipse Genie CLA 2019-09-04 06:59:41 EDT
New Gerrit change created: https://git.eclipse.org/r/148885
Comment 4 Lars Vogel CLA 2019-09-04 08:12:58 EDT
(In reply to Paul Pazderski from comment #2)
> A possible performance improvement: from your stacktrace it spent its time
> in TreeLineTracker. This class is already really fast but most requests are
> still not trivial.
> JavaIndenter requests the line every time the position is changed which is
> done (I assume) much more often than the line is actually required to know.
> Improvement is therefor to remove the line field and calculate it on demand.

Awesome Paul, with your patch the freeze is way shorter even for huge files. It is now only a 1.1 second freeze for ~100000 lines. 2.5 freeze for a larger one.

Here is the new stack trace:

Stack Trace
	at org.eclipse.jdt.internal.core.JavaModelManager.getInfo(JavaModelManager.java:2179)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:324)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:312)
	at org.eclipse.jdt.internal.core.Member.getNameRange(Member.java:353)
	at org.eclipse.jdt.ui.text.folding.DefaultJavaFoldingStructureProvider$JavaElementPosition.computeProjectionRegions(DefaultJavaFoldingStructureProvider.java:594)
	at org.eclipse.jface.text.source.projection.ProjectionViewer.computeCollapsedRegions(ProjectionViewer.java:1103)
	at org.eclipse.jface.text.source.projection.ProjectionViewer.widgetSelection2ModelSelection(ProjectionViewer.java:1624)
	at org.eclipse.jface.text.TextViewer.getSelectedRange(TextViewer.java:2244)
	at org.eclipse.jface.text.TextViewer.getSelection(TextViewer.java:2447)
	at org.eclipse.ui.texteditor.AbstractTextEditor.doGetSelection(AbstractTextEditor.java:2904)
	at org.eclipse.ui.texteditor.AbstractTextEditor$SelectionProvider.getSelection(AbstractTextEditor.java:1423)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor$JdtSelectionProvider.getSelection(JavaEditor.java:1394)
	at org.eclipse.jdt.internal.ui.actions.IndentAction.getSelection(IndentAction.java:774)
	at org.eclipse.jdt.internal.ui.actions.IndentAction.update(IndentAction.java:691)
	at org.eclipse.ui.texteditor.AbstractTextEditor.updateAction(AbstractTextEditor.java:5405)
	at org.eclipse.ui.texteditor.AbstractTextEditor.updateSelectionDependentActions(AbstractTextEditor.java:5478)
	at org.eclipse.ui.texteditor.AbstractTextEditor$2.lambda$0(AbstractTextEditor.java:3096)
	at org.eclipse.ui.texteditor.AbstractTextEditor$2$$Lambda$438/0x0000000801998440.run(Unknown Source)
	at org.eclipse.ui.texteditor.AbstractTextEditor$2.selectionChanged(AbstractTextEditor.java:3107)
	at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.ui.internal.JFaceUtil.lambda$0(JFaceUtil.java:47)
	at org.eclipse.ui.internal.JFaceUtil$$Lambda$74/0x00000008012aa040.run(Unknown Source)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
	at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:148)
	at org.eclipse.jface.text.TextViewer.fireSelectionChanged(TextViewer.java:2598)
	at org.eclipse.jface.text.TextViewer.selectionChanged(TextViewer.java:2577)
	at org.eclipse.jface.text.TextViewer.setSelectedRange(TextViewer.java:2271)
	at org.eclipse.jface.text.TextViewer.doOperation(TextViewer.java:3851)
	at org.eclipse.jface.text.source.SourceViewer.doOperation(SourceViewer.java:1064)
	at org.eclipse.jface.text.source.projection.ProjectionViewer.doOperation(ProjectionViewer.java:1466)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaSourceViewer.doOperation(JavaSourceViewer.java:199)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor$AdaptedSourceViewer.doOperation(CompilationUnitEditor.java:206)
	at org.eclipse.ui.texteditor.TextOperationAction.lambda$0(TextOperationAction.java:130)
	at org.eclipse.ui.texteditor.TextOperationAction$$Lambda$673/0x0000000801c06c40.run(Unknown Source)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:72)
	at org.eclipse.ui.texteditor.TextOperationAction.run(TextOperationAction.java:130)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
	at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:121)
	at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:95)
	at jdk.internal.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)
	at java.base@12.0.1/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base@12.0.1/java.lang.reflect.Method.invoke(Method.java:567)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:318)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:252)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:173)
	at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:156)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:498)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:487)
	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:308)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:584)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:653)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:443)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$2(KeyBindingDispatcher.java:386)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:96)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1838)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1404)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1431)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1414)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1455)
	at org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:819)
	at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:4012)
	at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:857)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2243)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:6846)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5841)
	at org.eclipse.swt.internal.gtk.GTK._gtk_main_do_event(Native Method)
	at org.eclipse.swt.internal.gtk.GTK.gtk_main_do_event(GTK.java:4154)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1476)
	at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
	at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1603)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4403)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:633)
	at org.eclipse.ui.internal.Workbench$$Lambda$110/0x000000080132a040.run(Unknown Source)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base@12.0.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base@12.0.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base@12.0.1/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base@12.0.1/java.lang.reflect.Method.invoke(Method.java:567)
	at app//org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660)
	at app//org.eclipse.equinox.launcher.Main.basicRun(Main.java:597)
	at app//org.eclipse.equinox.launcher.Main.run(Main.java:1468)
	at app//org.eclipse.equinox.launcher.Main.main(Main.java:1441)
Comment 5 Lars Vogel CLA 2019-09-04 08:25:51 EDT
Opening the large file also freezes Eclipse, opened Bug 550744 for that.
Comment 6 Roland Grunberg CLA 2019-09-04 10:39:12 EDT
From my testing, I'm not able to see any noticeable difference between 4.12 (2019-06) and 4.13RC1 (2019-09). Both informed me that the formatting was taking long at around 100k lines, and ran out of heap space at around 300k lines (I used QuickAssistProcessor.java).
Comment 7 Lars Vogel CLA 2019-09-04 11:22:48 EDT
(In reply to Roland Grunberg from comment #6)
> From my testing, I'm not able to see any noticeable difference between 4.12
> (2019-06) and 4.13RC1 (2019-09). Both informed me that the formatting was
> taking long at around 100k lines, and ran out of heap space at around 300k
> lines (I used QuickAssistProcessor.java).

It is not a regression, just slow.
Comment 9 Lars Vogel CLA 2019-09-20 02:03:28 EDT
Thanks Paul for the fix and Jeff for the review.