Bug 541040 - [nested projects] UI freeze for several minutes during search
Summary: [nested projects] UI freeze for several minutes during search
Status: NEW
Alias: None
Product: JDT
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 4.9   Edit
Hardware: All All
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: JDT-UI-Inbox CLA
QA Contact:
URL:
Whiteboard: stalebug
Keywords: performance
Depends on:
Blocks:
 
Reported: 2018-11-12 09:52 EST by Peter Palaga CLA
Modified: 2023-06-06 05:20 EDT (History)
2 users (show)

See Also:


Attachments
thread dump (52.96 KB, text/plain)
2018-11-12 09:52 EST, Peter Palaga CLA
no flags Details
thread dump 1 (53.23 KB, text/plain)
2018-11-12 09:52 EST, Peter Palaga CLA
no flags Details
Eclipse intallation info (1.04 MB, text/plain)
2018-11-12 09:53 EST, Peter Palaga CLA
no flags Details
Thread dump 0 during freeze triggered by refresh (28.64 KB, text/plain)
2018-11-14 05:05 EST, Peter Palaga CLA
no flags Details
Thread dump 1 during freeze triggered by refresh (29.57 KB, text/plain)
2018-11-14 05:05 EST, Peter Palaga CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Peter Palaga CLA 2018-11-12 09:52:03 EST
Created attachment 276550 [details]
thread dump

A text search over a mid size maven project hierarchy (wildfly-camel [1]) made Eclipse freeze for several minutes. Let me attach two thread dumps taken during the freeze.

[1] https://github.com/wildfly-extras/wildfly-camel
Comment 1 Peter Palaga CLA 2018-11-12 09:52:30 EST
Created attachment 276551 [details]
thread dump 1
Comment 2 Peter Palaga CLA 2018-11-12 09:53:14 EST
Created attachment 276552 [details]
Eclipse intallation info
Comment 3 Andrey Loskutov CLA 2018-11-12 10:25:13 EST
Peter, can you test 4.10 SDK nightly build? (M2 packages will be there soon)?

Stack looks same for both dumps.
Can you please close Projects Explorer and use Packages Explorer instead? Will it fix the problem?

"main" #1 prio=6 os_prio=0 cpu=3031491.09ms elapsed=16614.64s tid=0x00007fef50012800 nid=0x2d1d runnable  [0x00007fef59988000]
   java.lang.Thread.State: RUNNABLE
	at org.eclipse.jdt.internal.core.JavaModelManager.determineIfOnClasspath(JavaModelManager.java:1196)
	at org.eclipse.jdt.internal.core.JavaModelManager.create(JavaModelManager.java:1076)
	at org.eclipse.jdt.internal.core.JavaModelManager.create(JavaModelManager.java:1006)
	at org.eclipse.jdt.core.JavaCore.create(JavaCore.java:3501)
	at org.eclipse.jdt.ui.StandardJavaElementContentProvider.internalGetParent(StandardJavaElementContentProvider.java:522)
	at org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.internalGetParent(PackageExplorerContentProvider.java:407)
	at org.eclipse.jdt.ui.StandardJavaElementContentProvider.getParent(StandardJavaElementContentProvider.java:247)
	at org.eclipse.jdt.internal.ui.navigator.JavaNavigatorContentProvider.getParent(JavaNavigatorContentProvider.java:123)
	at org.eclipse.jdt.internal.ui.navigator.JavaNavigatorContentProvider.getPipelinedParent(JavaNavigatorContentProvider.java:215)
	at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.getPipelinedParent(SafeDelegateTreeContentProvider.java:192)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.findParent(NavigatorContentServiceContentProvider.java:680)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.access$8(NavigatorContentServiceContentProvider.java:668)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider$4.run(NavigatorContentServiceContentProvider.java:649)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.findParents(NavigatorContentServiceContentProvider.java:624)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.findPaths(NavigatorContentServiceContentProvider.java:595)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.findPaths(NavigatorContentServiceContentProvider.java:604)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.findPaths(NavigatorContentServiceContentProvider.java:604)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.findPaths(NavigatorContentServiceContentProvider.java:604)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.findPaths(NavigatorContentServiceContentProvider.java:604)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.findPaths(NavigatorContentServiceContentProvider.java:604)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.getParents(NavigatorContentServiceContentProvider.java:331)
	at org.eclipse.jface.viewers.AbstractTreeViewer.getParentElement(AbstractTreeViewer.java:1739)
	at org.eclipse.jface.viewers.TreeViewer.getParentElement(TreeViewer.java:566)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRemove(AbstractTreeViewer.java:1995)
	at org.eclipse.jface.viewers.AbstractTreeViewer.lambda$2(AbstractTreeViewer.java:2242)
	at org.eclipse.jface.viewers.AbstractTreeViewer$$Lambda$617/0x0000000801421440.run(Unknown Source)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1449)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:363)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1410)
	at org.eclipse.jface.viewers.AbstractTreeViewer.remove(AbstractTreeViewer.java:2242)
	at org.eclipse.ui.navigator.CommonViewer.remove(CommonViewer.java:326)
	at org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider.lambda$1(ResourceExtensionContentProvider.java:285)
	at org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider$$Lambda$614/0x0000000801422040.run(Unknown Source)
	at org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider.runUpdates(ResourceExtensionContentProvider.java:314)
	at org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider.lambda$0(ResourceExtensionContentProvider.java:142)
	at org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider$$Lambda$615/0x0000000801421c40.run(Unknown Source)
Comment 4 Peter Palaga CLA 2018-11-14 04:25:06 EST
> can you test 4.10 SDK nightly build? (M2 packages will be there soon)?

How/where can I get it?

> Stack looks same for both dumps.

Yes, and they were taken during the same freeze, ~8mins after each other.

> Can you please close Projects Explorer and use Packages Explorer instead? Will it fix the problem?

Err... not really, this is a workspace with 1500+ Maven modules. It is impossible to work with flat project layout having this amount of projects. I even do not know how to reliably trigger the freeze. If this happens again and if I am confident what I did, I can try with Packages Explorer.
Comment 5 Peter Palaga CLA 2018-11-14 05:05:05 EST
Created attachment 276568 [details]
Thread dump 0 during freeze triggered by refresh

I just faced another 2+mins UI freeze in the same workspace. It was triggered by an F5 press (refresh) on the root maven module of wildfly-camel [1] in Project Explorer. Not sure why this particular refresh triggered the freeze. I tried to reproduce it by doing various things that I typically do, followed by F5, but did not see a UI freeze again. 

These are things I tried but have not succeeded to reproduce:

git reset --hard HEAD~1 # on the console + F5 in Project Explorer

mvn clean install -Dts.all # full build with integration tests, which creates lots of resources in target directories + F5 in Project Explorer

[1] https://github.com/wildfly-extras/wildfly-camel
Comment 6 Peter Palaga CLA 2018-11-14 05:05:51 EST
Created attachment 276569 [details]
Thread dump 1 during freeze triggered by refresh

Same freeze as "Thread dump 0 during freeze triggered by refresh" but two minutes later
Comment 7 Peter Palaga CLA 2018-11-14 06:39:53 EST
I just encountered another 2+mins freeze while searching for "fuse-resources.txt" in "*" files, on root wildfly-camel project. Performing the same search again does not cause a freeze. Hence, I still cannot reproduce with Package Explorer as long as I am not able to reliably reproduce with Project Explorer.
Comment 8 Andrey Loskutov CLA 2018-11-14 06:57:32 EST
(In reply to Peter Palaga from comment #4)
> > can you test 4.10 SDK nightly build? (M2 packages will be there soon)?
> 
> How/where can I get it?

Pure SDK builds are here: take most recent one which is not marked as failed
http://download.eclipse.org/eclipse/downloads/

But most likely you want to have some "package", here is M2 page:
https://www.eclipse.org/downloads/packages/release/2018-12/m2

From the stack the code (JDT/JDT UI mostly) is going deep into 2001 and in the git history of the stack one can even see commits from Erich Gamma. I guess the old code can't scale well with so many nested projects. I believe this was even not possible at that time to have nested projects at all, which would explain why the code does not scale. But I haven't analyzed this stack, just guessing.
Comment 9 Eclipse Genie CLA 2021-06-08 11:59:42 EDT
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 10 Eclipse Genie CLA 2023-06-06 05:20:06 EDT
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.