History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: IDEA-16227
Type: Performance Problem Performance Problem
Status: Open Open
Assignee: Maxim Shafirov
Reporter: Keith Lea
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
IDEA: Feedback

IDEA attempts parsing entire directory tree of newly attached library source from within EventQueue thread

Created: 07 Nov 07 21:56   Updated: 08 Nov 07 18:08
Component/s: Project Configuration

Environment: Ubuntu Linux

Build: 7,531
Severity: High


 Description  « Hide
I experienced a hang as IntelliJ apparently tried traversing the entire directory tree of an attached library source that I added. The main reason we use library source instead of project source is to avoid such hangs... I don't remember this ever happening in 6.x.

Here's the (reversed) stack trace:

AWT-EventQueue-1 group: 'Idea Thread Group'
 9,141 100 %
 java.awt.EventDispatchThread.run()
 9,141 100 %
 com.intellij.ide.IdeEventQueue.dispatchEvent(AWTEvent)
 9,141 100 %
 com.intellij.ide.IdeEventQueue.b(AWTEvent)
 9,141 100 %
 com.intellij.ide.IdeEventQueue.c(AWTEvent)
 9,141 100 %
 java.awt.EventQueue.dispatchEvent(AWTEvent)
 9,141 100 %
 com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(MouseEvent)
 9,141 100 %
 com.intellij.openapi.actionSystem.impl.ActionButton.a(MouseEvent)
 9,141 100 %
 com.intellij.openapi.actionSystem.impl.ActionButton.a(AnActionEvent)
 9,141 100 %
 com.intellij.ide.actions.ShowSettingsAction.actionPerformed(AnActionEvent)
 9,141 100 %
 com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(Project, ConfigurableGroup[])
 9,141 100 %
 com.intellij.ide.actions.ShowSettingsUtilImpl.showControlPanelOptions(Project, ConfigurableGroup[], Configurable)
 9,141 100 %
 com.intellij.openapi.ui.DialogWrapper.show()
 9,141 100 %
 com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show()
 9,141 100 %
 com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show()
 9,141 100 %
 java.awt.Dialog.show()
 9,141 100 %
 com.intellij.ide.IdeEventQueue.dispatchEvent(AWTEvent)
 9,141 100 %
 com.intellij.ide.IdeEventQueue.b(AWTEvent)
 9,141 100 %
 com.intellij.ide.IdeEventQueue.c(AWTEvent)
 9,141 100 %
 java.awt.EventQueue.dispatchEvent(AWTEvent)
 9,141 100 %
 com.intellij.openapi.options.ex.ControlPanelSettingsEditor$MyActionButton$1.mouseReleased(MouseEvent)
 9,141 100 %
 com.intellij.openapi.options.ex.ControlPanelSettingsEditor.access$300(ControlPanelSettingsEditor, Configurable)
 9,141 100 %
 com.intellij.openapi.options.ex.ControlPanelSettingsEditor.b(Configurable)
 9,141 100 %
 com.intellij.openapi.ui.DialogWrapper.show()
 9,141 100 %
 com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show()
 9,141 100 %
 com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show()
 9,141 100 %
 java.awt.Dialog.show()
 9,141 100 %
 com.intellij.ide.IdeEventQueue.dispatchEvent(AWTEvent)
 9,141 100 %
 com.intellij.ide.IdeEventQueue.b(AWTEvent)
 9,141 100 %
 com.intellij.ide.IdeEventQueue.c(AWTEvent)
 9,141 100 %
 java.awt.EventQueue.dispatchEvent(AWTEvent)
 9,141 100 %
 com.intellij.openapi.roots.ui.configuration.ClasspathPanel$11.actionPerformed(ActionEvent)
 9,141 100 %
 com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryTableEditor.openDialog(Component, Collection, boolean)
 9,141 100 %
 com.intellij.openapi.ui.DialogWrapper.show()
 9,141 100 %
 com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show()
 9,141 100 %
 com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show()
 9,141 100 %
 java.awt.Dialog.show()
 9,141 100 %
 com.intellij.ide.IdeEventQueue.dispatchEvent(AWTEvent)
 9,141 100 %
 com.intellij.ide.IdeEventQueue.b(AWTEvent)
 9,141 100 %
 com.intellij.ide.IdeEventQueue.c(AWTEvent)
 9,141 100 %
 java.awt.EventQueue.dispatchEvent(AWTEvent)
 9,141 100 %
 com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryTableEditor$AttachItemAction.actionPerformed(ActionEvent)
 9,141 100 %
 com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryTableEditor.access$1700(LibraryTableEditor, Library, VirtualFile[], OrderRootType, boolean)
 9,141 100 %
 com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryTableEditor.a(Library, VirtualFile[], OrderRootType, boolean)
 9,141 100 %
 com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(Runnable)
 9,141 100 %
 com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryTableEditor$4.run()
 9,141 100 %
 com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryTableEditor.commitChanges()
 9,141 100 %
 com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(Runnable)
 9,141 100 %
 com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryTableEditor$2.run()
 9,141 100 %
 com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditor.commit()
 9,141 100 %
 com.intellij.openapi.roots.impl.libraries.LibraryImpl.commit()
 9,141 100 %
 com.intellij.openapi.roots.impl.libraries.LibraryImpl.b(LibraryImpl)
 9,141 100 %
 com.intellij.openapi.roots.impl.libraries.LibraryImpl$MyRootProviderImpl.fireRootSetChanged()
 9,141 100 %
 com.intellij.openapi.roots.impl.RootProviderBaseImpl.fireRootSetChanged()
 9,141 100 %
 $Proxy27.rootSetChanged(RootProvider)
 9,141 100 %
 com.intellij.util.EventDispatcher$1.invoke(Object, Method, Object[])
 9,141 100 %
 com.intellij.util.EventDispatcher.access$100(EventDispatcher, Method, Object[])
 9,141 100 %
 com.intellij.util.EventDispatcher.dispatch(Method, Object[])
 9,141 100 %
 java.lang.reflect.Method.invoke(Object, Object[])
 9,141 100 %
 com.intellij.openapi.roots.impl.LibraryOrderEntryBaseImpl$MyRootSetChangedListener.rootSetChanged(RootProvider)
 9,141 100 %
 com.intellij.openapi.roots.impl.LibraryOrderEntryBaseImpl.access$100(LibraryOrderEntryBaseImpl, RootProvider)
 9,141 100 %
 com.intellij.openapi.roots.impl.LibraryOrderEntryBaseImpl.d(RootProvider)
 9,141 100 %
 com.intellij.openapi.roots.impl.RootModelImpl.fireAfterExternalChange()
 9,141 100 %
 com.intellij.openapi.roots.impl.ModuleRootManagerImpl.fireRootsChanged()
 9,141 100 %
 com.intellij.openapi.roots.impl.ProjectRootManagerImpl.rootsChanged(boolean)
 9,141 100 %
 $Proxy63.rootsChanged(ModuleRootEvent)
 9,141 100 %
 com.intellij.util.messages.impl.MessageBusImpl$2.invoke(Object, Method, Object[])
 9,141 100 %
 com.intellij.util.messages.impl.MessageBusImpl.access$000(MessageBusImpl, Message)
 9,141 100 %
 com.intellij.util.messages.impl.MessageBusImpl.sendMessage(Message)
 9,141 100 %
 com.intellij.util.messages.impl.MessageBusImpl.pumpMessages()
 9,141 100 %
 com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(Message)
 9,141 100 %
 java.lang.reflect.Method.invoke(Object, Object[])
 9,141 100 %
 com.intellij.openapi.roots.impl.DirectoryIndexImpl$3.rootsChanged(ModuleRootEvent)
 9,141 100 %
 com.intellij.openapi.roots.impl.DirectoryIndexImpl.access$100(DirectoryIndexImpl)
 9,141 100 %
 com.intellij.openapi.roots.impl.DirectoryIndexImpl.a()
 9,141 100 %
 com.intellij.openapi.roots.impl.DirectoryIndexImpl.a(boolean, VirtualFile)
 9,141 100 %
 com.intellij.openapi.roots.impl.DirectoryIndexImpl.b(VirtualFile, String, VirtualFile, VirtualFile, FileTypeManager)
 9,141 100 %
 com.intellij.openapi.roots.impl.DirectoryIndexImpl.b(VirtualFile, String, VirtualFile, VirtualFile, FileTypeManager)
 9,141 100 %
 com.intellij.openapi.roots.impl.DirectoryIndexImpl.b(VirtualFile, String, VirtualFile, VirtualFile, FileTypeManager)
 9,141 100 %
 com.intellij.openapi.roots.impl.DirectoryIndexImpl.b(VirtualFile, String, VirtualFile, VirtualFile, FileTypeManager)
 9,141 100 %
 com.intellij.openapi.roots.impl.DirectoryIndexImpl.b(VirtualFile, String, VirtualFile, VirtualFile, FileTypeManager)
 9,141 100 %
 com.intellij.openapi.roots.impl.DirectoryIndexImpl.b(VirtualFile, String, VirtualFile, VirtualFile, FileTypeManager)
 8,972 98 %
 com.intellij.openapi.roots.impl.DirectoryIndexImpl.b(VirtualFile, String, VirtualFile, VirtualFile, FileTypeManager)
 8,287 91 %
 com.intellij.openapi.roots.impl.DirectoryIndexImpl.b(VirtualFile, String, VirtualFile, VirtualFile, FileTypeManager)
 6,444 70 %
 com.intellij.openapi.roots.impl.DirectoryIndexImpl.b(VirtualFile, String, VirtualFile, VirtualFile, FileTypeManager)
 4,194 46 %
 com.intellij.openapi.roots.impl.DirectoryIndexImpl.b(VirtualFile, String, VirtualFile, VirtualFile, FileTypeManager)
 2,215 24 %
 com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.getChildren()
 1,198 13 %
 com.intellij.openapi.vfs.newvfs.persistent.PersistentFS.listIds(VirtualFile)
 1,198 13 %
 com.intellij.openapi.vfs.newvfs.persistent.PersistentFS.list(VirtualFile)
 1,198 13 %
 com.intellij.openapi.vfs.newvfs.persistent.PersistentFS.b(VirtualFile)
 1,198 13 %
 com.intellij.openapi.vfs.newvfs.persistent.PersistentFS.a(int, int, VirtualFile, NewVirtualFileSystem)


 All   Comments   Work Log   Change History      Sort Order:
Dmitry Jemerov - 08 Nov 07 18:08
This is not a bug but rather an architectural limitation. This processing has always been performed in the event dispatch thread.