This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 234629 - Node should not be renamed in EDT thread
Summary: Node should not be renamed in EDT thread
Status: RESOLVED FIXED
Alias: None
Product: platform
Classification: Unclassified
Component: Actions (show other bugs)
Version: 7.4
Hardware: All All
: P3 normal (vote)
Assignee: Jan Peska
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-08-20 10:53 UTC by Vladimir Kvashin
Modified: 2013-08-22 04:29 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vladimir Kvashin 2013-08-20 10:53:06 UTC
When I rename a node in Favorites via "Rename to ..." menu item (the one that shows a dialog to enter new name), the file is renamed just in the EDT thread. This can lead to UI freeze on slow file systems. Here is the stack.

"AWT-EventQueue-1"
org.netbeans.modules.remote.impl.fs.RemoteFileObjectBase.renameImpl(RemoteFileObjectBase.java:639)
org.netbeans.modules.remote.impl.fs.RemoteFileObjectBase.rename(RemoteFileObjectBase.java:617)
org.netbeans.modules.remote.impl.fs.RemoteFileObject.rename(RemoteFileObject.java:237)
org.openide.loaders.DefaultDataObject.handleRename(DefaultDataObject.java:137)
org.openide.loaders.DataObject$1Op.run(DataObject.java:761)
org.openide.loaders.DataObject$1WrapRun.run(DataObject.java:971)
org.openide.loaders.DataObjectPool$1WrapAtomicAction.run(DataObjectPool.java:261)
org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:127)
org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:609)
org.openide.loaders.DataObjectPool.runAtomicAction(DataObjectPool.java:286)
org.openide.loaders.DataObject.invokeAtomicAction(DataObject.java:991)
org.openide.loaders.DataObject.rename(DataObject.java:776)
org.openide.loaders.DataNode.setName(DataNode.java:157)
org.openide.loaders.DataNode.setName(DataNode.java:178)
org.openide.nodes.FilterNode.setName(FilterNode.java:487)
org.openide.nodes.FilterNode.setName(FilterNode.java:487)
org.openide.nodes.FilterNode.setName(FilterNode.java:487)
org.netbeans.modules.favorites.FavoritesNode$ProjectFilterNode.setName(FavoritesNode.java:506)
org.openide.actions.RenameAction.performAction(RenameAction.java:102)
org.openide.util.actions.NodeAction$DelegateAction$1.run(NodeAction.java:586)
org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:95)
org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:116)
org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:99)
org.openide.util.actions.NodeAction$DelegateAction.actionPerformed(NodeAction.java:583)
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
javax.swing.AbstractButton.doClick(AbstractButton.java:376)
javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
java.awt.Component.processMouseEvent(Component.java:6505)
javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
java.awt.Component.processEvent(Component.java:6270)
java.awt.Container.processEvent(Container.java:2229)
java.awt.Component.dispatchEventImpl(Component.java:4861)
java.awt.Container.dispatchEventImpl(Container.java:2287)
java.awt.Component.dispatchEvent(Component.java:4687)
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
java.awt.Container.dispatchEventImpl(Container.java:2273)
java.awt.Window.dispatchEventImpl(Window.java:2719)
java.awt.Component.dispatchEvent(Component.java:4687)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
java.awt.EventQueue.access$200(EventQueue.java:103)
java.awt.EventQueue$3.run(EventQueue.java:682)
java.awt.EventQueue$3.run(EventQueue.java:680)
java.security.AccessController.doPrivileged(AccessController.java)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
java.awt.EventQueue$4.run(EventQueue.java:696)
java.awt.EventQueue$4.run(EventQueue.java:694)
java.security.AccessController.doPrivileged(AccessController.java)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
Comment 1 Ondrej Vrabec 2013-08-20 11:20:21 UTC
org.openide.actions.RenameAction could hack it the same way as org.openide.explorer.view.ViewUtil.nodeRename
Comment 2 Jan Peska 2013-08-20 12:42:05 UTC
fix: http://hg.netbeans.org/core-main/rev/3140edea7b6a
Comment 3 Jan Peska 2013-08-20 12:44:22 UTC
I've used the same approach as in ViewUtil.nodeRename as Ondra suggested.
Comment 4 Quality Engineering 2013-08-22 04:29:06 UTC
Integrated into 'main-silver', will be available in build *201308212300* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)

Changeset: http://hg.netbeans.org/main-silver/rev/3140edea7b6a
User: Jan Peska <JPESKA@netbeans.org>
Log: Issue #234629 - Node should not be renamed in EDT thread
Perform rename out of EDT in case of slow FS