Community
Participate
Working Groups
Given, our project is big (500k+ lines of generated/written code), sometimes it takes 10+ minutes before, for example, Open Type opens. This happens often if I close/open one of the 20 projects I got available. That it is waiting a long time is fine, and sometimes it does show 'table synchronization' in the bottom right progress indicator. The biggest problem is that Eclipse is in a busy state so I cannot do anything (probably due to I pressed ctrl-shift-t to open Open Type). This makes it impossible for me to continue working or cancel the background process. I think this has to be handled better. Either Open Type shouldn't care that certain decorators aren't up to date, or at least pop up the "waiting for background processes" dialog and get out of busy state. I've attached a thread dump of what is happening while I'm waiting: "main" prio=1 tid=0x08052bc8 nid=0x2638 runnable [bfffa000..bfffcc28] at java.lang.System.arraycopy(Native Method) at java.util.ArrayList.toArray(ArrayList.java:305) at org.eclipse.core.internal.resources.MarkerManager.basicFindMatching(MarkerManager.java:116) at org.eclipse.core.internal.resources.MarkerManager$3.visitElement(MarkerManager.java:520) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:78) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:123) at org.eclipse.core.internal.resources.MarkerManager.visitorFindMarkers(MarkerManager.java:526) at org.eclipse.core.internal.resources.MarkerManager.findMarkers(MarkerManager.java:226) at org.eclipse.core.internal.resources.Resource.findMarkers(Resource.java:810) at org.eclipse.jdt.ui.ProblemsLabelDecorator.getErrorTicksFromMarkers(ProblemsLabelDecorator.java:214) at org.eclipse.jdt.ui.ProblemsLabelDecorator.computeAdornmentFlags(ProblemsLabelDecorator.java:164) at org.eclipse.jdt.internal.ui.viewsupport.TreeHierarchyLayoutProblemsDecorator.computeAdornmentFlags(TreeHierarchyLayoutProblemsDecorator.java:69) at org.eclipse.jdt.ui.ProblemsLabelDecorator.decorateImage(ProblemsLabelDecorator.java:144) at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.decorateImage(JavaUILabelProvider.java:119) at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.getImage(JavaUILabelProvider.java:134) at org.eclipse.jface.viewers.DecoratingLabelProvider.getImage(DecoratingLabelProvider.java:74) at org.eclipse.jface.viewers.DecoratingLabelProvider.updateLabel(DecoratingLabelProvider.java:208) at org.eclipse.jdt.internal.ui.viewsupport.ResourceToItemsMapper.updateItem(ResourceToItemsMapper.java:82) at org.eclipse.jdt.internal.ui.viewsupport.ResourceToItemsMapper.resourceChanged(ResourceToItemsMapper.java:62) at org.eclipse.jdt.internal.ui.viewsupport.ProblemTreeViewer.handleLabelProviderChanged(ProblemTreeViewer.java:115) at org.eclipse.jface.viewers.ContentViewer$1.labelProviderChanged(ContentViewer.java:74) at org.eclipse.jdt.ui.ProblemsLabelDecorator.fireProblemsChanged(ProblemsLabelDecorator.java:349) at org.eclipse.jdt.ui.ProblemsLabelDecorator.access$0 (ProblemsLabelDecorator.java:344) at org.eclipse.jdt.ui.ProblemsLabelDecorator$1.problemsChanged(ProblemsLabelDecorator.java:324) at org.eclipse.jdt.internal.ui.viewsupport.ProblemMarkerManager$1.run(ProblemMarkerManager.java:176) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:106) - locked <0x49b7dc00> (a org.eclipse.swt.widgets.RunnableLock) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:2572) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2301) at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:136) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:262) at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:397) at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:251) at org.eclipse.ui.internal.progress.ProgressManager$3.run(ProgressManager.java:778) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:812) at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:789) at org.eclipse.ui.internal.progress.ProgressManager.run(ProgressManager.java:973) at org.eclipse.jdt.internal.ui.dialogs.TypeSelectionDialog.isCacheUpToDate(TypeSelectionDialog.java:260) at org.eclipse.jdt.internal.ui.dialogs.TypeSelectionDialog.open(TypeSelectionDialog.java:183) at org.eclipse.jdt.internal.ui.actions.OpenTypeAction.run(OpenTypeAction.java:68) at org.eclipse.jdt.internal.ui.actions.OpenTypeAction.run(OpenTypeAction.java:89) at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:276) at org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:206) at org.eclipse.ui.commands.ActionHandler.execute(ActionHandler.java:141) at org.eclipse.ui.internal.commands.Command.execute(Command.java:132) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:471) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:889) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:930) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:548) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$2 (WorkbenchKeyboard.java:496) at org.eclipse.ui.internal.keys.WorkbenchKeyboard$1.handleEvent(WorkbenchKeyboard.java:261) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1006) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:953) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:978) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:963) at org.eclipse.swt.widgets.Control.sendKeyEvent(Control.java:2337) at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:1816) at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:440) at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1207) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3098) at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(Native Method) at org.eclipse.swt.widgets.Display.eventProc(Display.java:879) at org.eclipse.swt.internal.gtk.OS.gtk_main_iteration(Native Method) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2297) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1377) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1348) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:254) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:141) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:96) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:335) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:129) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.eclipse.core.launcher.Main.basicRun(Main.java:183) at org.eclipse.core.launcher.Main.run(Main.java:644) at org.eclipse.core.launcher.Main.main(Main.java:628) "VM Thread" prio=1 tid=0x08086820 nid=0x2638 runnable
Not sure why this was moved to core. The UI is blocked because Open Type uses a modal progress dialog. This 10+ minutes of waiting will likely be fixed by the improvements currently being made in the Open Type dialog.
This will indeed be improved with the new open type dialog for which a beta version goes into the build of today. It will do the search engine refreshing in a background job, so the dialog will be more responsive and will allow selecting types from the history in this stage. However, the current dialog should support cancel in this state. What happens is that due to the closing of the project search indexes have to be refresh. This will also happen with the new dialog since it can't be avoided.
The new dialog got released and it doesn't take any locks/scheduling rules anymore.