Community
Participate
Working Groups
I've been using Eclipse for over a decade, and as of this morning I was running Eclipse 2019-09 (4.13) Enterprise (unzipped from the package, not installed). As soon as 2019-12 (4.14) Enterprise was released this morning, I installed it and it updated my workspace. But Content Assist is unacceptably slow!! For example if I type `Integer.` expecting the list of `Integer` static methods, I now must wait around two seconds before the list of methods appear. (Before it has always been almost instantaneous.) And during this time the cursor turns into a spinning circle. I work day in and day out with Content Assist, usually every few seconds. My productivity will grind to a halt if I have to wait for Content Assist like this. In over a decade I have never seen behavior like this. Please fix this, and please, please don't make us wait until a 2020-XX milestone before publishing a fix. In the meantime, how can I revert my workspace so it will work with Eclipse 2019-09 again?
Some positive news: I went to "Window > Preferences > Java > Editor > Content Assist > Advanced" and clicked on "Restore Defaults". It removed the "Java Postfix Template Proposals" checkbox in both the upper list and the lower list. Now I have never changed the options here, except to explicitly reset them (see below), so I don't know why this "Java Postfix Template Proposals" checkbox would have been checked in the first place. Now after turning off "Java Postfix Template Proposals" I still get a circle mouse pointer every time I use Content Assist (which is irritating but I can't say with 100% confidence that this didn't happen before), and the wait has now been cut down to around half a second. The current lag of half a second still seems slower than it was before, but it's certainly better than two seconds. Wasn't there a fiasco with an Eclipse release a year or two ago when one of these Content Assist settings things was half-baked or something, and it got turned on when it wasn't supposed to in one of the milestones, so it broke Content Assist altogether? I don't remember the details, but I do remember I had to explicitly go turn one of these off to get Content Assist back. And I also remember about a year ago when I did an update, it would actually have a message that would tell me to go reset my Content Assist settings. So it seems there is a history of troubles with Content Assist settings. In any case, I had certainly not turned _on_ any new Content Assist settings. I'll try it today and see whether the new reduced lag is bearable. I'm running Windows 10 64-bit by the way.
For the bugs I mentioned from memory in my comments above, see Bug 547959, especially the following comments: * https://bugs.eclipse.org/bugs/show_bug.cgi?id=547959#c3 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=547959#c7 See also Bug 542925, and also note https://bugs.eclipse.org/bugs/show_bug.cgi?id=542925#c3 . So is this another (a third? a fourth?) case of some Content Assist feature that wasn't ready accidentally getting released?
Same tragedy as before, now due bug 458804 (postfix content assist). The root cause is bug 550226 that is still open. Interestingly, I do NOT see any problems with content assist on Integer.|, I assume this is classpath related.
Created attachment 281263 [details] screenshot before / after restore defaults Same here, I have never enabled "Postfix" proposals, but they were ON in my existing workspace. Clicking on "Restore Defaults" shows them deselected.
Garret, could you share the screenshot of proposal list for Integer.| ? Just curious which types cause the slowdown here.
Created attachment 281265 [details] Integer-assist-1.png
Created attachment 281266 [details] Integer-assist-5.png
Is there any possibility of reproducing this on some project that can be shared ? I've tried on a large file and that slows the completion a little bit, and points to the problem being ASTParser.createAST(..) and ASTParser.createBindings(..) in PostfixCompletionProposalComputer.updateTemplateEngine(..) .
> Garret, could you share the screenshot of proposal list for Integer? Sure, but that was just an example off the top of my head. It happened with anything, not just `Integer`. And in fact `Integer` isn't the thing I was even using it with. I just picked a class to give as an example. It's a long list of suggestions so I had to do several screen shots. P.S. Arg, this hideous Bugzilla interface doesn't even permit selecting multiple files at the same time. And to top it off it forced me to type a description for each one. I'm not going to waste the rest of my day laboriously adding each screen shot; I've already wasted a large chunk of my morning tracking down this problem, working around this problem, and filing the bug. If the thing you're looking for isn't in the first or last screen shot, let me know and I'll attach one of the middle ones. P.P.S. And stupid Bugzilla thought I had a "mid-air collision" with my comment with someone else's comment. Can't it figure out I'm just adding a comment? Puleeze, time to upgrade to a better issue tracker. P.P.P.S. Obviously the Bugzilla complaints aren't directed at any person in particular. It's just an indication of one more impediment on top of another. It sort of ruins the excitement of waiting to get the new Eclipse the past few days. Seriously, I was hitting `F5` over and over this morning until it appeared. Now I haven't gained anything and just wasted time I could have been working. Arg.
Garret, you could maybe upload a zip file with all screenshots?
Created attachment 281267 [details] screen shots of buggy Content Assist with Integer
New Gerrit change created: https://git.eclipse.org/r/154752
I was able to eliminate the usage of the createBindings(..) call which seems to improve the situation, but we still are doing createAST(..). I'm not sure if there's a way to avoid the latter. It would be great if someone could confirm whether the patch improves the situation for them. I only tested by opening up 'LocalCorrectionsQuickFixTest' (~11k lines) and calling Integer.| somewhere inside as this was the only thing I've observed that will slow down the completion.
Garret, could you activate the freeze reporting and paste the stack traces from the freeze to this bug? To activate this go to Preference -> General -> UI Responsiveness and select "Detect periods of unresponsive UI". Redo your slow Java completion afterwards and you should find freeze reports in the Error log.
Here is the summary. (Ironically I got a couple of more copying the error log itself; I'll ignore those.) I'm attaching the details to the ticket. eclipse.buildId=4.14.0.I20191210-0610 java.version=11.0.5 java.vendor=AdoptOpenJDK BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US Framework arguments: -product org.eclipse.epp.package.jee.product Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product org.eclipse.ui.monitoring Warning Thu Dec 19 06:30:49 PST 2019 UI freeze of 1.6s at 06:30:48.347
Created attachment 281278 [details] log exerpt
I wanted to report that I upgraded to Eclipse Enterprise 2019-12 (4.14) on a completely unrelated Ubunto 16.04 machine, with a 100% unrelated (but large) project. First of all, as seen above, Eclipse automatically added the "Java Postfix Template Proposals", which is incorrect—I had certainly never added it on that machine, and "resetting to defaults" removed it. But interestingly it only slowed down a Content Assist lookup to (my best guess) about 200ms (compared to about 2 seconds on my Windows machine). When I removed "Java Postfix Template Proposals", the Content Assist popup menu was almost instantaneous, even though on the Windows machine it only went down to around 500ms. The Windows machine actually has a more recent CPU (i7-7600U) than the Ubuntu machine (i7-7500U). I don't remember the clock speed, but the Windows machine is running at 2.9 GHz. In short I wouldn't expect such a large difference in Content Assist popup menu display time. Seriously, on the Windows machine I believe the mouse cursor actually briefly turns into a circle pointer, even with "Java Postfix Template Proposals". Is the difference between running Eclipse on Windows and on Ubuntu really that big!?
Gerrit change https://git.eclipse.org/r/154752 was merged to [master]. Commit: http://git.eclipse.org/c/jdt/eclipse.jdt.ui.git/commit/?id=422776726fc734124f6f19ee3d4931a0d18a14cf
(In reply to Garret Wilson from comment #17) > Is the difference between running Eclipse on Windows and on Ubuntu really > that big!? AFAIK (I'm using Linux) the file system access on Windows is super slow (not Eclipse related, it is based on the OS) so any file system access is much slower on Windows. And I believe code completion access JAR files hence the file access. From your UI freeze, I cannot see an obvious place in which the processor is stuck, it reported several places this means that it it does not hang in a specific place.
> … any file system access is much slower on Windows. > And I believe code completion access JAR files hence the file access. If this is a problem, then a solution must be found. * Maybe Eclipse should preload and prebuild method trees. * Maybe Eclipse should cache the most recently used APIs. * Maybe the full tree should be searched asynchronously, populating the popup menu in as more results are found. That's just off the top of my head. Or maybe the current code needs to be optimized. Whatever the case, it's bordering on the edge of "it's really too slow to use anymore". If I can type in a web search and if Google can, in real time, provide me search suggestions across the network based upon billions of other searches, Eclipse should have no trouble giving me some options from a few JAR files.
Garret, can you try with latest I-Build which contains the fix from Roland? https://download.eclipse.org/eclipse/downloads/
> Garret, can you try with latest I-Build which contains the fix from Roland? Lars, I would love to, but I'm super busy at the moment. I may not get a chance to look at it for several weeks. Plus I use the Enterprise package for Windows, and in my experience these I builds are broken all over the place with dependency problems or don't even have the Enterprise package. And trying to use the upgrade process with the I builds is even more broken, as we've discussed here and on Stack Overflow. The last thing I need is to lose an entire day or two just trying to sort out a mess. I may have to wait until a later milestone, sorry.
(In reply to Garret Wilson from comment #22) > > Garret, can you try with latest I-Build which contains the fix from Roland? > Plus I use the Enterprise package for Windows, and in my experience these I > builds are broken all over the place with dependency problems or don't even > have the Enterprise package. And trying to use the upgrade process with the > I builds is even more broken, as we've discussed here and on Stack Overflow. I would not update and risk your real environment in your case rather do a separate download + extract for the test. To test this you should only require the SDK download from https://download.eclipse.org/eclipse/downloads/ > The last thing I need is to lose an entire day or two just trying to sort > out a mess. I may have to wait until a later milestone, sorry. Understandable. Thanks for considering testing this in the future. Please note that latest I-Builds (and hence the milestones will also include them) also include async code completion for Java so most likely you will not be able to get a freeze anymore.
> Please note that latest I-Builds (and hence the milestones will also include > them) also include async code completion for Java so most likely you will not > be able to get a freeze anymore. Oh, wow that would be super. I'd love to try it. I'll probably wait for a milestone or two, but then I hope to get a chance. Thank you.
Roland, in Eclipse SDK Version: 2020-03 (4.15) Build id: I20200105-1800 OS: Linux, v.5.3.0-24-generic, x86_64 / gtk 3.24.12, WebKit 2.26.2 Java version: 12.0.1 I see UI freezes due to PostfixCompletion. Stack Trace at org.eclipse.jdt.internal.compiler.lookup.Scope.compilationUnitScope(Scope.java:751) at org.eclipse.jdt.internal.compiler.lookup.Scope.getMethod(Scope.java:2926) at org.eclipse.jdt.internal.compiler.ast.MessageSend.findMethodBinding(MessageSend.java:971) at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:792) at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:696) at org.eclipse.jdt.internal.compiler.ast.LocalDeclaration.resolve(LocalDeclaration.java:386) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:641) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:316) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:551) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1293) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1418) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:666) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:1243) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:714) at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1217) at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:832) at org.eclipse.jdt.internal.ui.text.java.PostfixCompletionProposalComputer.updateTemplateEngine(PostfixCompletionProposalComputer.java:146) at org.eclipse.jdt.internal.ui.text.java.PostfixCompletionProposalComputer.analyzeCoreContext(PostfixCompletionProposalComputer.java:117) at org.eclipse.jdt.internal.ui.text.java.PostfixCompletionProposalComputer.computeCompletionEngine(PostfixCompletionProposalComputer.java:106) at org.eclipse.jdt.internal.ui.text.java.AbstractTemplateCompletionProposalComputer.computeCompletionProposals(AbstractTemplateCompletionProposalComputer.java:71) at org.eclipse.jdt.internal.ui.text.java.CompletionProposalComputerDescriptor.computeCompletionProposals(CompletionProposalComputerDescriptor.java:345) at org.eclipse.jdt.internal.ui.text.java.CompletionProposalCategory.computeCompletionProposals(CompletionProposalCategory.java:340) at org.eclipse.jdt.internal.ui.text.java.ContentAssistProcessor.collectProposals(ContentAssistProcessor.java:334) at org.eclipse.jdt.internal.ui.text.java.ContentAssistProcessor.computeCompletionProposals(ContentAssistProcessor.java:291) at org.eclipse.jface.text.contentassist.ContentAssistant$2.lambda$0(ContentAssistant.java:2015) at org.eclipse.jface.text.contentassist.ContentAssistant$2$$Lambda$1014/0x00000008020aa840.accept(Unknown Source) at java.base@12.0.1/java.util.Collections$SingletonSet.forEach(Collections.java:4795) at org.eclipse.jface.text.contentassist.ContentAssistant$2.run(ContentAssistant.java:2014) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.jface.text.contentassist.ContentAssistant.computeCompletionProposals(ContentAssistant.java:2011) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.computeProposals(CompletionProposalPopup.java:578) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.lambda$0(CompletionProposalPopup.java:508) at org.eclipse.jface.text.contentassist.CompletionProposalPopup$$Lambda$1013/0x00000008020ab040.run(Unknown Source) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:72) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.showProposals(CompletionProposalPopup.java:503) at org.eclipse.jface.text.contentassist.ContentAssistant$AutoAssistListener.lambda$0(ContentAssistant.java:380) at org.eclipse.jface.text.contentassist.ContentAssistant$AutoAssistListener$$Lambda$1011/0x00000008020acc40.run(Unknown Source) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4975) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4496) 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:660) at org.eclipse.ui.internal.Workbench$$Lambda$204/0x00000008013ef440.run(Unknown Source) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:559) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:154) 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:401) 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:657) at app//org.eclipse.equinox.launcher.Main.basicRun(Main.java:594) at app//org.eclipse.equinox.launcher.Main.run(Main.java:1465) at app//org.eclipse.equinox.launcher.Main.main(Main.java:1438)
New Gerrit change created: https://git.eclipse.org/r/155505
Now (still on 2019-12) I'm getting errors in the middle of content completion. Yes, it's probably a different bug. Yes, it would probably be best to create a different bug ticket. But I'm extremely busy, and I have to get this work done, and now this basic functionality breaks, and I just don't have time to go do that. So here is the stack trace: !ENTRY org.eclipse.jdt.ui 4 0 2020-01-10 13:05:30.146 !MESSAGE Error in JDT Core during reconcile !STACK 1 Java Model Exception: java.lang.NullPointerException at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:324) at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:192) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:268) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:596) at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent(CompilationUnit.java:1138) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.makeConsistent(ReconcileWorkingCopyOperation.java:173) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:94) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:736) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:802) at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1315) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:131) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.access$0(JavaReconcilingStrategy.java:113) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy$1.run(JavaReconcilingStrategy.java:93) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:90) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:157) at org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.reconcile(CompositeReconcilingStrategy.java:94) at org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile(JavaCompositeReconcilingStrategy.java:107) at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:76) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:210) Caused by: java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference.optimizedBooleanConstant(QualifiedNameReference.java:931) at org.eclipse.jdt.internal.compiler.ast.WhileStatement.doesNotCompleteNormally(WhileStatement.java:309) at org.eclipse.jdt.internal.compiler.ast.Block.doesNotCompleteNormally(Block.java:168) at org.eclipse.jdt.internal.compiler.ast.LambdaExpression.analyzeShape(LambdaExpression.java:838) at org.eclipse.jdt.internal.compiler.ast.LambdaExpression.isPotentiallyCompatibleWith(LambdaExpression.java:861) at org.eclipse.jdt.internal.compiler.lookup.PolyTypeBinding.isPotentiallyCompatibleWith(PolyTypeBinding.java:48) at org.eclipse.jdt.internal.compiler.lookup.Scope.parameterCompatibilityLevel(Scope.java:4955) at org.eclipse.jdt.internal.compiler.lookup.Scope.parameterCompatibilityLevel(Scope.java:4921) at org.eclipse.jdt.internal.compiler.lookup.Scope.computeCompatibleMethod(Scope.java:867) at org.eclipse.jdt.internal.compiler.lookup.Scope.computeCompatibleMethod(Scope.java:794) at org.eclipse.jdt.internal.compiler.lookup.Scope.findMethod0(Scope.java:1750) at org.eclipse.jdt.internal.compiler.lookup.Scope.findMethod(Scope.java:1651) at org.eclipse.jdt.internal.compiler.lookup.Scope.getMethod(Scope.java:2948) at org.eclipse.jdt.internal.compiler.ast.MessageSend.findMethodBinding(MessageSend.java:966) at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:787) at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Expression.java:1066) at org.eclipse.jdt.internal.compiler.ast.Block.resolve(Block.java:125) at org.eclipse.jdt.internal.compiler.ast.LambdaExpression.resolveType(LambdaExpression.java:457) at org.eclipse.jdt.internal.compiler.ast.ASTNode.resolvePolyExpressionArguments(ASTNode.java:708) at org.eclipse.jdt.internal.compiler.ast.MessageSend.findMethodBinding(MessageSend.java:973) at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:787) at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Expression.java:1066) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:641) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:316) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:551) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1293) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1418) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:666) at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:1072) at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:272) ... 19 more Caused by: java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference.optimizedBooleanConstant(QualifiedNameReference.java:931) at org.eclipse.jdt.internal.compiler.ast.WhileStatement.doesNotCompleteNormally(WhileStatement.java:309) at org.eclipse.jdt.internal.compiler.ast.Block.doesNotCompleteNormally(Block.java:168) at org.eclipse.jdt.internal.compiler.ast.LambdaExpression.analyzeShape(LambdaExpression.java:838) at org.eclipse.jdt.internal.compiler.ast.LambdaExpression.isPotentiallyCompatibleWith(LambdaExpression.java:861) at org.eclipse.jdt.internal.compiler.lookup.PolyTypeBinding.isPotentiallyCompatibleWith(PolyTypeBinding.java:48) at org.eclipse.jdt.internal.compiler.lookup.Scope.parameterCompatibilityLevel(Scope.java:4955) at org.eclipse.jdt.internal.compiler.lookup.Scope.parameterCompatibilityLevel(Scope.java:4921) at org.eclipse.jdt.internal.compiler.lookup.Scope.computeCompatibleMethod(Scope.java:867) at org.eclipse.jdt.internal.compiler.lookup.Scope.computeCompatibleMethod(Scope.java:794) at org.eclipse.jdt.internal.compiler.lookup.Scope.findMethod0(Scope.java:1750) at org.eclipse.jdt.internal.compiler.lookup.Scope.findMethod(Scope.java:1651) at org.eclipse.jdt.internal.compiler.lookup.Scope.getMethod(Scope.java:2948) at org.eclipse.jdt.internal.compiler.ast.MessageSend.findMethodBinding(MessageSend.java:966) at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:787) at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Expression.java:1066) at org.eclipse.jdt.internal.compiler.ast.Block.resolve(Block.java:125) at org.eclipse.jdt.internal.compiler.ast.LambdaExpression.resolveType(LambdaExpression.java:457) at org.eclipse.jdt.internal.compiler.ast.ASTNode.resolvePolyExpressionArguments(ASTNode.java:708) at org.eclipse.jdt.internal.compiler.ast.MessageSend.findMethodBinding(MessageSend.java:973) at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:787) at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Expression.java:1066) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:641) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:316) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:551) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1293) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1418) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:666) at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:1072) at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:272) at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:192) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:268) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:596) at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent(CompilationUnit.java:1138) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.makeConsistent(ReconcileWorkingCopyOperation.java:173) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:94) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:736) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:802) at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1315) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:131) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.access$0(JavaReconcilingStrategy.java:113) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy$1.run(JavaReconcilingStrategy.java:93) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:90) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:157) at org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.reconcile(CompositeReconcilingStrategy.java:94) at org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile(JavaCompositeReconcilingStrategy.java:107) at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:76) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:210) !SUBENTRY 1 org.eclipse.jdt.core 4 1005 2020-01-10 13:05:30.146 !MESSAGE java.lang.NullPointerException !STACK 0 java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference.optimizedBooleanConstant(QualifiedNameReference.java:931) at org.eclipse.jdt.internal.compiler.ast.WhileStatement.doesNotCompleteNormally(WhileStatement.java:309) at org.eclipse.jdt.internal.compiler.ast.Block.doesNotCompleteNormally(Block.java:168) at org.eclipse.jdt.internal.compiler.ast.LambdaExpression.analyzeShape(LambdaExpression.java:838) at org.eclipse.jdt.internal.compiler.ast.LambdaExpression.isPotentiallyCompatibleWith(LambdaExpression.java:861) at org.eclipse.jdt.internal.compiler.lookup.PolyTypeBinding.isPotentiallyCompatibleWith(PolyTypeBinding.java:48) at org.eclipse.jdt.internal.compiler.lookup.Scope.parameterCompatibilityLevel(Scope.java:4955) at org.eclipse.jdt.internal.compiler.lookup.Scope.parameterCompatibilityLevel(Scope.java:4921) at org.eclipse.jdt.internal.compiler.lookup.Scope.computeCompatibleMethod(Scope.java:867) at org.eclipse.jdt.internal.compiler.lookup.Scope.computeCompatibleMethod(Scope.java:794) at org.eclipse.jdt.internal.compiler.lookup.Scope.findMethod0(Scope.java:1750) at org.eclipse.jdt.internal.compiler.lookup.Scope.findMethod(Scope.java:1651) at org.eclipse.jdt.internal.compiler.lookup.Scope.getMethod(Scope.java:2948) at org.eclipse.jdt.internal.compiler.ast.MessageSend.findMethodBinding(MessageSend.java:966) at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:787) at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Expression.java:1066) at org.eclipse.jdt.internal.compiler.ast.Block.resolve(Block.java:125) at org.eclipse.jdt.internal.compiler.ast.LambdaExpression.resolveType(LambdaExpression.java:457) at org.eclipse.jdt.internal.compiler.ast.ASTNode.resolvePolyExpressionArguments(ASTNode.java:708) at org.eclipse.jdt.internal.compiler.ast.MessageSend.findMethodBinding(MessageSend.java:973) at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:787) at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Expression.java:1066) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:641) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:316) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:551) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1293) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1418) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:666) at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:1072) at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:272) at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:192) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:268) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:596) at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent(CompilationUnit.java:1138) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.makeConsistent(ReconcileWorkingCopyOperation.java:173) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:94) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:736) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:802) at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1315) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:131) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.access$0(JavaReconcilingStrategy.java:113) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy$1.run(JavaReconcilingStrategy.java:93) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:90) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:157) at org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.reconcile(CompositeReconcilingStrategy.java:94) at org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile(JavaCompositeReconcilingStrategy.java:107) at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:76) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:210)
(In reply to Garret Wilson from comment #27) > Now (still on 2019-12) I'm getting errors in the middle of content > completion. This is a trade-off. I've you can live with the bug, then don't report a new bug and live with it. Otherwise, you have to file a new bug report.
> This is a trade-off. I've you can live with the bug, then don't report a new > bug and live with it. Otherwise, you have to file a new bug report. I understand. I really will try to file a bug report, but it's simply not possible now with my limited time (in the minutes now) today. Since it is related to content completion, I thought it best at least to record the stack trace. Perhaps in the least someone would think a null pointer exception important enough to investigate anyway. Have a great weekend.
(In reply to Garret Wilson from comment #29) > I really will try to file a bug report, but it's simply not > possible now with my limited time (in the minutes now) today. Since it is > related to content completion, I thought it best at least to record the > stack trace. Perhaps in the least someone would think a null pointer > exception important enough to investigate anyway. > > Have a great weekend. Thanks Garret for the report, I extracted your comment into Bug 559038.
(In reply to Lars Vogel from comment #30) > Thanks Garret for the report, I extracted your comment into Bug 559038. Thanks to both of you!
Gerrit change https://git.eclipse.org/r/155505 was merged to [master]. Commit: http://git.eclipse.org/c/jdt/eclipse.jdt.ui.git/commit/?id=271a32b8ee8ff77cd09012e51c786e7e70cf2e09
@Garret, @Lars, are you able to confirm with one of the recent I-builds that postfix completion is no longer slow ?
I had just a few minutes free so I was going to test this as you requested in 2020-03 M1, which according to https://wiki.eclipse.org/Category:SimRel-2020-03 should have been released on 2020-01-17. But I can't find it at https://www.eclipse.org/downloads/packages/release/2020-03/ .
(In reply to Garret Wilson from comment #34) > I had just a few minutes free so I was going to test this as you requested > in 2020-03 M1, which according to > https://wiki.eclipse.org/Category:SimRel-2020-03 should have been released > on 2020-01-17. But I can't find it at > https://www.eclipse.org/downloads/packages/release/2020-03/ . Can you try from one of the recent Integration Builds (I) at https://download.eclipse.org/eclipse/downloads/ ? It's usually easier to test against one of those as opposed to waiting for a milestone build.
(In reply to Roland Grunberg from comment #35) > (In reply to Garret Wilson from comment #34) > > I had just a few minutes free so I was going to test this as you requested > > in 2020-03 M1, which according to > > https://wiki.eclipse.org/Category:SimRel-2020-03 should have been released > > on 2020-01-17. But I can't find it at > > https://www.eclipse.org/downloads/packages/release/2020-03/ . > > Can you try from one of the recent Integration Builds (I) at > https://download.eclipse.org/eclipse/downloads/ ? It's usually easier to > test against one of those as opposed to waiting for a milestone build. See comment #22.
I see that 2020-03 M1 finally appeared. I'll gladly install it and try it out, but first can someone tell me whether it's going to change my workspace format/version so that I can't easily revert back to 2019-12? I'm in the middle of a pretty big task for weeks, and the last thing I need is for something to go wrong and waste a morning trying to restore force the workspace back to the old version or restore stuff from backups. Any info would be appreciated.
(In reply to Garret Wilson from comment #37) > I see that 2020-03 M1 finally appeared. I'll gladly install it and try it > out, but first can someone tell me whether it's going to change my workspace > format/version so that I can't easily revert back to 2019-12? I'm in the > middle of a pretty big task for weeks, and the last thing I need is for > something to go wrong and waste a morning trying to restore force the > workspace back to the old version or restore stuff from backups. Any info > would be appreciated. To be save, make a ws copy and use this one for testing.
> To be save, make a ws copy and use this one for testing. I forgot to add the line, "and yes, I know I can make copies of stuff and spend half my day puttering around, but I just don't have the time". Sorry, I'm really, really busy. I really, really want to help you fix these problems. I just need to do it in a way that doesn't interrupt my work. Hence my question. So I take it you don't know the answer to the question?
> To be save, make a ws copy and use this one for testing. But I don't have time to "play test". I would be installing 2020-03 M1 to "for real test" on my real data. If it works, I keep it and report back. If it doesn't work, I revert back to 2019-12, still using my real data.
(In reply to Garret Wilson from comment #40) > > To be save, make a ws copy and use this one for testing. > > But I don't have time to "play test". I would be installing 2020-03 M1 to > "for real test" on my real data. If it works, I keep it and report back. If > it doesn't work, I revert back to 2019-12, still using my real data. It should work without issues, I do it all the time but I don't know your installation nor do I have the same plugins installed. Platform ws is stable since several releases.
I'm pretty sure either 2019-12 or 2019-09 gave me the "we're changing the format of your workspace, and you can't go back" warning. So I was just asking if the same thing would happen with 2020-03. See e.g. Bug 538830 (courtesy a Google search). Is there a list of workspace versions and associated Eclipse releases, so I could know? I would think this is something that should be published and tracked.
The warning is unconditional given. Btw. a ws copy might be done by now I guess.
(In reply to Lars Vogel from comment #43) > … > Btw. a ws copy might be done by now I guess. You're not getting it. Installing integration builds or even milestone builds has the potential of severely interrupting my work because of the bugs, the rollbacks, the changes, etc. It's not just the simple workspace backup and restore; that's just part of it (although it is significant). For example I went ahead and installed 2020-03 M1 Enterprise, and already a large chunk of my time has been finding workarounds and filing tickets for Bug 559629 and Bug 559638. All these little interruptions together cut out more than the sum of the time each takes, because each interruption breaks the flow of creativity and I have to start over and it takes a while to get back to the place I was at. Nevertheless I installed 2020-03 M1 Enterprise as I mentioned, and I turned "Java Postfix Template Proposals" back on, and so far I can see no apparent slowdown more than when it was turned off, so that's good news.
I'm going to mark this as RESOLVED (FIXED) as we have multiple people indicating the issue with postfix completion is improved. Garret, and Julian have mentioned M1 (containing https://git.eclipse.org/r/154752 ) improved the situation for them. Additionally, Lars and Julian have also tested https://git.eclipse.org/r/155505 which should further improve things for M2. Thanks to everyone for taking the time to test things out. There are also separate bugs to track the other issues discussed in this bug.
Thanks, Roland
Verified for 4.15 M3 using I20200219-0600 build Thanks everyone who helped in testing/discussing this issue. In addition to the performance for this computation being greatly improved, enabling asynchronous content assist completely spares users from the inconvenience of having completions freeze the UI.
I had the same issue with 2020-12 version. Restoring defaults helped, as it unchecked the "Chain Template Proposals". Not sure what it is, but it's time varies for different classes and can get up to seconds.
Could you re-open this bug or shall I report a new agonizingly bug ? The java source editor in eclipse is unusable and freeze few *seconds* for every keystrokes or even "mouse click" yesterday until I found this bug report to disable the annotation processing. https://twitter.com/hkdennis2k/status/1392718818087084039