You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am observing a period of beach balling when starting up the STS IDE with my regular workspace. The thread dump that I took during this period reveals that the boot dashboard model is being initialized during startup, but directly triggers the full initialization of all the Java tooling (which usually happens async once the workbench is up and showing). We should allow the boot dashboard to initialize its model async as well, to improve startup performance.
Here is the thread dump (the main thread part that blocks the UI thread and causes the beachballing while showing the splash screen):
"main" #1 prio=6 os_prio=31 cpu=6974.14ms elapsed=20.53s tid=0x00007f885680a400 nid=0x103 runnable [0x00007ff7b22ec000]
java.lang.Thread.State: RUNNABLE
at java.lang.String.<init>([email protected]/String.java:590)
at java.lang.String.<init>([email protected]/String.java:1385)
at jdk.internal.jimage.ImageStringsReader.stringFromByteBuffer(ImageStringsReader.java:272)
at jdk.internal.jimage.BasicImageReader.getString(BasicImageReader.java:344)
at jdk.internal.jimage.ImageStringsReader.get(ImageStringsReader.java:52)
at jdk.internal.jimage.ImageLocation.getAttributeString(ImageLocation.java:253)
at jdk.internal.jimage.ImageLocation.getExtension(ImageLocation.java:281)
at jdk.internal.jimage.ImageLocation.getFullName(ImageLocation.java:314)
at jdk.internal.jimage.ImageLocation.getFullName(ImageLocation.java:289)
at jdk.internal.jimage.ImageReader$SharedImageReader.lambda$handleModulesSubTree$1(ImageReader.java:456)
at jdk.internal.jimage.ImageReader$SharedImageReader$$Lambda$734/0x00000001008dd768.visit(Unknown Source)
at jdk.internal.jimage.ImageReader$SharedImageReader.visitLocation(ImageReader.java:361)
at jdk.internal.jimage.ImageReader$SharedImageReader.handleModulesSubTree(ImageReader.java:455)
at jdk.internal.jimage.ImageReader$SharedImageReader.buildNode(ImageReader.java:311)
- locked <0x000000008137cdd8> (a jdk.internal.jimage.ImageReader$SharedImageReader)
at jdk.internal.jimage.ImageReader$SharedImageReader.findNode(ImageReader.java:507)
- locked <0x000000008137cdd8> (a jdk.internal.jimage.ImageReader$SharedImageReader)
at jdk.internal.jimage.ImageReader.findNode(ImageReader.java:104)
at jdk.internal.jrtfs.SystemImage$1.findNode(SystemImage.java:65)
at jdk.internal.jrtfs.JrtFileSystem.lookup(JrtFileSystem.java:449)
at jdk.internal.jrtfs.JrtFileSystem.checkNode(JrtFileSystem.java:482)
at jdk.internal.jrtfs.JrtFileSystem.getFileAttributes(JrtFileSystem.java:208)
at jdk.internal.jrtfs.JrtPath.getAttributes(JrtPath.java:654)
at jdk.internal.jrtfs.JrtFileSystemProvider.readAttributes(JrtFileSystemProvider.java:340)
at java.nio.file.Files.readAttributes([email protected]/Files.java:1851)
at java.nio.file.FileTreeWalker.getAttributes([email protected]/FileTreeWalker.java:220)
at java.nio.file.FileTreeWalker.visit([email protected]/FileTreeWalker.java:277)
at java.nio.file.FileTreeWalker.next([email protected]/FileTreeWalker.java:374)
at java.nio.file.Files.walkFileTree([email protected]/Files.java:2845)
at java.nio.file.Files.walkFileTree([email protected]/Files.java:2882)
at org.eclipse.jdt.internal.compiler.util.JrtFileSystem.walkModuleImage(JRTUtil.java:706)
at org.eclipse.jdt.internal.compiler.util.JRTUtil.walkModuleImage(JRTUtil.java:242)
at org.eclipse.jdt.internal.core.builder.ClasspathJrt.lambda$0(ClasspathJrt.java:89)
at org.eclipse.jdt.internal.core.builder.ClasspathJrt$$Lambda$759/0x00000001008f46e8.apply(Unknown Source)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent([email protected]/ConcurrentHashMap.java:1740)
- locked <0x000000008de8e828> (a java.util.concurrent.ConcurrentHashMap$Node)
at org.eclipse.jdt.internal.core.builder.ClasspathJrt.findPackagesInModules(ClasspathJrt.java:86)
at org.eclipse.jdt.internal.core.builder.ClasspathJrt.getModuleNames(ClasspathJrt.java:261)
at org.eclipse.pde.internal.core.TargetPlatformHelper.querySystemPackages(TargetPlatformHelper.java:418)
at org.eclipse.pde.internal.core.TargetPlatformHelper.getPlatformProperties(TargetPlatformHelper.java:385)
at org.eclipse.pde.internal.core.MinimalState.getProfilePlatformProperties(MinimalState.java:260)
at org.eclipse.pde.internal.core.MinimalState.initializePlatformProperties(MinimalState.java:254)
at org.eclipse.pde.internal.core.PDEState.<init>(PDEState.java:67)
at org.eclipse.pde.internal.core.PluginModelManager.initializeTable(PluginModelManager.java:616)
at org.eclipse.pde.internal.core.PluginModelManager.findModel(PluginModelManager.java:1070)
- locked <0x0000000083a40878> (a java.lang.Object)
at org.eclipse.pde.internal.core.RequiredPluginsInitializer.initialize(RequiredPluginsInitializer.java:50)
at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:3145)
at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:2093)
at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:3815)
at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:3271)
at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:3435)
at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:2554)
at org.springframework.ide.eclipse.boot.core.BootPropertyTester.isBootProject(BootPropertyTester.java:130)
at org.springframework.ide.eclipse.boot.dash.model.BootProjectDashElementFactory.createOrGet(BootProjectDashElementFactory.java:53)
at org.springframework.ide.eclipse.boot.dash.model.LocalBootDashModel$$Lambda$689/0x000000010089a948.apply(Unknown Source)
at java.util.stream.ReferencePipeline$3$1.accept([email protected]/ReferencePipeline.java:197)
at java.util.Spliterators$ArraySpliterator.forEachRemaining([email protected]/Spliterators.java:992)
at java.util.stream.AbstractPipeline.copyInto([email protected]/AbstractPipeline.java:509)
at java.util.stream.AbstractPipeline.wrapAndCopyInto([email protected]/AbstractPipeline.java:499)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential([email protected]/ReduceOps.java:921)
at java.util.stream.AbstractPipeline.evaluate([email protected]/AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect([email protected]/ReferencePipeline.java:682)
at org.springframework.ide.eclipse.boot.dash.model.LocalBootDashModel.updateElementsFromWorkspace(LocalBootDashModel.java:295)
at org.springframework.ide.eclipse.boot.dash.model.LocalBootDashModel$3.gotValue(LocalBootDashModel.java:178)
at org.springframework.ide.eclipse.boot.dash.model.LocalBootDashModel$3.gotValue(LocalBootDashModel.java:1)
at org.springsource.ide.eclipse.commons.livexp.core.LiveExpression.addListener(LiveExpression.java:171)
at org.springframework.ide.eclipse.boot.dash.model.LocalBootDashModel.init(LocalBootDashModel.java:176)
at org.springframework.ide.eclipse.boot.dash.model.LocalBootDashModel.getElements(LocalBootDashModel.java:302)
- locked <0x00000000835b5088> (a org.springframework.ide.eclipse.boot.dash.model.LocalBootDashModel)
at org.springframework.ide.eclipse.boot.dash.views.sections.BootDashTreeContentProvider.getChildren(BootDashTreeContentProvider.java:49)
at org.springframework.ide.eclipse.boot.dash.views.sections.BootDashTreeContentProvider.hasChildren(BootDashTreeContentProvider.java:77)
at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2184)
at org.eclipse.jface.viewers.TreeViewer.isExpandable(TreeViewer.java:553)
at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2214)
at org.eclipse.jface.viewers.AbstractTreeViewer.updatePlus(AbstractTreeViewer.java:2897)
at org.eclipse.jface.viewers.TreeViewer.updatePlus(TreeViewer.java:801)
at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:865)
at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:842)
at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:611)
at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:790)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1610)
at org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:787)
at org.eclipse.jface.viewers.AbstractTreeViewer.lambda$1(AbstractTreeViewer.java:1595)
at org.eclipse.jface.viewers.AbstractTreeViewer$$Lambda$639/0x00000001007e06c0.run(Unknown Source)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1398)
at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:365)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1359)
at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1589)
at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:282)
at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1632)
at org.springframework.ide.eclipse.boot.dash.views.sections.BootDashUnifiedTreeSection.createContents(BootDashUnifiedTreeSection.java:330)
at org.springsource.ide.eclipse.commons.livexp.ui.ViewPartWithSections.createPartControl(ViewPartWithSections.java:57)
at org.springframework.ide.eclipse.boot.dash.views.BootDashTreeView.createPartControl(BootDashTreeView.java:116)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:158)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityView.createPartControl(CompatibilityView.java:155)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:365)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0([email protected]/Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke([email protected]/NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke([email protected]/DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke([email protected]/Method.java:568)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:995)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:960)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalInject(InjectorImpl.java:140)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:403)
at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:330)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:202)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:91)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:60)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:42)
at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:132)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:995)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:659)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$1.run(PartRenderingEngine.java:544)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:528)
at org.eclipse.e4.ui.workbench.renderers.swt.ElementReferenceRenderer.createWidget(ElementReferenceRenderer.java:73)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:995)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:659)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:763)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:728)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:712)
at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1208)
at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:116)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:677)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:763)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:728)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:712)
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:72)
at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:150)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:673)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:763)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:728)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:712)
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:72)
at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:150)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:673)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:763)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:728)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:712)
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:72)
at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:150)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:673)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:763)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:728)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:712)
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:72)
at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:51)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:673)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:763)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:728)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:712)
at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:82)
at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:116)
at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:64)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:677)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:763)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:728)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:712)
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:72)
at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:150)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:673)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:763)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:728)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:712)
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:72)
at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:658)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:673)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:763)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:728)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:712)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1083)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:643)
at org.eclipse.ui.internal.Workbench$$Lambda$271/0x00000001002b5360.run(Unknown Source)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:550)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:171)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0([email protected]/Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke([email protected]/NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke([email protected]/DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke([email protected]/Method.java:568)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
The text was updated successfully, but these errors were encountered:
I am observing a period of beach balling when starting up the STS IDE with my regular workspace. The thread dump that I took during this period reveals that the boot dashboard model is being initialized during startup, but directly triggers the full initialization of all the Java tooling (which usually happens async once the workbench is up and showing). We should allow the boot dashboard to initialize its model async as well, to improve startup performance.
Here is the thread dump (the
main
thread part that blocks the UI thread and causes the beachballing while showing the splash screen):The text was updated successfully, but these errors were encountered: