Hi, Yes, it's possibly an enablement expression that causes the deep computation of a status. I'll look into it, but you need to create an issue on the issue tracker. That's where the stacktrace will be useful.
I don't think the repository is iterated over multiple times: I would hope Eclipse caches the results of the expressions. Also, even though these tips do not relate to the problem that you are exposing, I would recommend this: - If possible, use SSH instead of HTTPS. - When working with large repository, and even smaller ones, do not set --follow lightly: I've found that flag to have a huge performance impact. Please, create an issue. Thank you. On Wednesday, 16 January 2019 20:17:42 UTC+1, Paul Eichhorn wrote: > > Hello Amenel, > > I recently moved to the newest MercurialEclipse version along with an os > upgrade (mac), and am now experiencing heavy performance problems with > MercurialEclipse. The managed repository is on the larger side ( ~ 20.000 > files ), and many actions ( such as right-clicking the repository in the > Mercurial Repositories view ) cause a complete UI freeze for up to 6 > minutes. > > A thread dump (see below) seems to suggest that at least one item in the > popup-menu is a bit needy when calculating enablement status, although the > duration of the freeze probably means the entire repository is iterated > over multiple times. > > Kind regards, > Paul > > > Thread dump has the main thread during these times: > > "main" #1 prio=6 os_prio=31 tid=0x00007fac4c826000 nid=0x307 runnable > [0x00007ffee5b91000] > java.lang.Thread.State: RUNNABLE > at java.io.UnixFileSystem.getBooleanAttributes0(Native Method) > at > java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242) > at java.io.File.isFile(File.java:882) > at > com.vectrace.MercurialEclipse.model.resources.HgContainerAdapter.getChild(HgContainerAdapter.java:147) > > > at > com.vectrace.MercurialEclipse.model.resources.HgContainerAdapter.getChild(HgContainerAdapter.java:161) > > > at > com.vectrace.MercurialEclipse.model.resources.HgContainerAdapter.getChild(HgContainerAdapter.java:161) > > > at > com.vectrace.MercurialEclipse.model.resources.HgContainerAdapter.getChild(HgContainerAdapter.java:161) > > > at > com.vectrace.MercurialEclipse.model.resources.HgContainerAdapter.getChild(HgContainerAdapter.java:161) > > > at > com.vectrace.MercurialEclipse.model.resources.HgContainerAdapter.getChild(HgContainerAdapter.java:161) > > > at > com.vectrace.MercurialEclipse.model.resources.HgContainerAdapter.getChild(HgContainerAdapter.java:161) > > > at > com.vectrace.MercurialEclipse.model.resources.HgContainerAdapter.getChild(HgContainerAdapter.java:161) > > > at > com.vectrace.MercurialEclipse.model.resources.HgContainerAdapter.getChild(HgContainerAdapter.java:161) > > > at > com.vectrace.MercurialEclipse.model.resources.HgContainerAdapter.getFile(HgContainerAdapter.java:120) > > > at > com.vectrace.MercurialEclipse.team.cache.MercurialStatusCache.getLocalMembers(MercurialStatusCache.java:1419) > > > at > com.vectrace.MercurialEclipse.menu.FlagPropertyTester.testAnyChildStatus(FlagPropertyTester.java:175) > > > at > com.vectrace.MercurialEclipse.menu.FlagPropertyTester.test(FlagPropertyTester.java:94) > > > at > org.eclipse.core.internal.expressions.Property.test(Property.java:61) > at > org.eclipse.core.internal.expressions.TestExpression.evaluate(TestExpression.java:103) > > > at > org.eclipse.core.internal.expressions.CompositeExpression.evaluateAnd(CompositeExpression.java:55) > > > at > org.eclipse.core.internal.expressions.AdaptExpression.evaluate(AdaptExpression.java:118) > > > at > org.eclipse.core.internal.expressions.CompositeExpression.evaluateAnd(CompositeExpression.java:55) > > > at > org.eclipse.core.internal.expressions.IterateExpression.evaluate(IterateExpression.java:165) > > > at > org.eclipse.core.internal.expressions.ReferenceExpression.evaluate(ReferenceExpression.java:74) > > > at > org.eclipse.core.internal.expressions.CompositeExpression.evaluateOr(CompositeExpression.java:69) > > > at > org.eclipse.core.internal.expressions.OrExpression.evaluate(OrExpression.java:25) > > > at > org.eclipse.ui.internal.handlers.HandlerProxy.setEnabled(HandlerProxy.java:228) > > > at > org.eclipse.ui.internal.handlers.E4HandlerProxy.setEnabled(E4HandlerProxy.java:134) > > > at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > > > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) > > > at > org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:320) > > > at > org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:254) > at > org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:164) > > > at > org.eclipse.e4.core.commands.internal.HandlerServiceHandler.setEnabled(HandlerServiceHandler.java:84) > > > at org.eclipse.core.commands.Command.setEnabled(Command.java:865) > at > org.eclipse.e4.core.commands.internal.HandlerServiceImpl.canExecute(HandlerServiceImpl.java:179) > > > at > org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.canExecuteItem(HandledContributionItem.java:451) > > > at > org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem$1.run(AbstractContributionItem.java:516) > > > at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) > at > org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.updateItemEnablement(AbstractContributionItem.java:557) > > > at > org.eclipse.e4.ui.workbench.renderers.swt.ToolItemUpdater.updateContributionItems(ToolItemUpdater.java:40) > > > at > org.eclipse.e4.ui.workbench.renderers.swt.ToolBarManagerRenderer$1.changed(ToolBarManagerRenderer.java:355) > > > at > org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:117) > > > at > org.eclipse.e4.core.internal.contexts.EclipseContext.processScheduled(EclipseContext.java:365) > > > at > org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:189) > > > at > org.eclipse.e4.ui.internal.workbench.swt.ShellActivationListener.lambda$0(ShellActivationListener.java:186) > > > at > org.eclipse.e4.ui.internal.workbench.swt.ShellActivationListener$$Lambda$479/1994004868.widgetDisposed(Unknown > > Source) > at > org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:127) > at > org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) > at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4292) > at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1512) > at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1535) > at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1516) > at org.eclipse.swt.widgets.Widget.release(Widget.java:1353) > at org.eclipse.swt.widgets.Control.release(Control.java:2961) > at org.eclipse.swt.widgets.Widget.dispose(Widget.java:694) > at org.eclipse.jface.window.Window.close(Window.java:333) > at org.eclipse.jface.dialogs.Dialog.close(Dialog.java:993) > at org.eclipse.jface.dialogs.Dialog.cancelPressed(Dialog.java:485) > at org.eclipse.jface.dialogs.Dialog.buttonPressed(Dialog.java:471) > at org.eclipse.jface.dialogs.Dialog.lambda$0(Dialog.java:622) > at > org.eclipse.jface.dialogs.Dialog$$Lambda$597/1475167719.accept(Unknown > Source) > at > org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:84) > > > at > org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252) > at > org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) > at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4292) > at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1512) > at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1535) > at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1520) > at > org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1324) > at > org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4116) > at > org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3733) > at > org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1173) > > > at > org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) > > at > org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1062) > > > at > org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156) > > > at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:628) > at > org.eclipse.ui.internal.Workbench$$Lambda$22/351249017.run(Unknown Source) > at > org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) > > at > org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:563) > at > org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:151) > at > org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:155) > > > at > org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:199) > > > 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:391) > > at > org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:246) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > > > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659) > at org.eclipse.equinox.launcher.Main.basicRun(Main.java:595) > at org.eclipse.equinox.launcher.Main.run(Main.java:1501) > > > > > -- You received this message because you are subscribed to the Google Groups "MercurialEclipse" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
