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 250864 - Very slow rename in Remote Favorites tab if user don't use -J-Dversioning.*.allowableFolders flags
Summary: Very slow rename in Remote Favorites tab if user don't use -J-Dversioning.*.a...
Status: NEW
Alias: None
Product: cnd
Classification: Unclassified
Component: Remote VCS (show other bugs)
Version: 8.1
Hardware: PC Solaris
: P3 normal (vote)
Assignee: Vladimir Kvashin
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-03-03 12:15 UTC by soldatov
Modified: 2015-09-25 22:58 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments
snapshot (318.49 KB, application/octet-stream)
2015-03-03 12:16 UTC, soldatov
Details

Note You need to log in before you can comment on or make changes to this bug.
Description soldatov 2015-03-03 12:15:16 UTC
Scenario:
- Clone mercurial testbase on USA host
- Add this remote path to Favorites tab
- Select some folder with 25 files and press F2
- Replace foldername on zzzfoldername
==>
IDE renames folder very quickly if I use such command: ./netbeans -J-Dversioning.git.allowableFolders=/folder -J-Dversioning.hg.allowableFolders=/folder -J-Dversioning.svn.allowableFolders=/folder

With default default arguments this scenario works slow or extremely slow.
Comment 1 soldatov 2015-03-03 12:16:30 UTC
Created attachment 152360 [details]
snapshot
Comment 2 Alexander Simon 2015-03-03 12:33:36 UTC
All time is in VCSFileProxySupport.refreshPairImpl
Comment 3 Vladimir Kvashin 2015-09-01 09:12:44 UTC
Just information: the Alexander's note is correct. Right now when a file/folder is moved or renamed, RemoteVcsSupport refreshes its parent (recursively). This can take long. Another thing that I dislike about that is that this is done directly from RemoteDirectory.renameChild, while this directory holds a lock.

The stack is:

"Explorer Views"
	at org.netbeans.modules.remote.impl.fs.RemoteDirectory.refreshImpl(RemoteDirectory.java:1656)
	at org.netbeans.modules.remote.impl.fs.server.FSSTransport.refreshFast(FSSTransport.java:499)
	at org.netbeans.modules.remote.impl.fs.RemoteFileSystemTransport.refreshFast(RemoteFileSystemTransport.java:111)
	at org.netbeans.modules.remote.impl.fileoperations.spi.RemoteVcsSupportUtil.refreshFor(RemoteVcsSupportUtil.java:391)
	at org.netbeans.modules.remotefs.versioning.impl.RemoteVcsSupportImpl.refreshFor(RemoteVcsSupportImpl.java:481)
	at org.netbeans.modules.remotefs.versioning.api.RemoteVcsSupport.refreshFor(RemoteVcsSupport.java:220)
	at org.netbeans.modules.remotefs.versioning.api.RemoteVcsSupport.refreshFor(RemoteVcsSupport.java:215)
	at org.netbeans.modules.remotefs.versioning.api.VCSFileProxySupport.refreshImpl(VCSFileProxySupport.java:653)
	at org.netbeans.modules.remotefs.versioning.api.VCSFileProxySupport.refreshPairImpl(VCSFileProxySupport.java:643)
	at org.netbeans.modules.remotefs.versioning.api.VCSFileProxySupport.renameTo(VCSFileProxySupport.java:391)
	at org.netbeans.modules.mercurial.remote.MercurialInterceptor.hgMoveImplementation(MercurialInterceptor.java:233)
	at org.netbeans.modules.mercurial.remote.MercurialInterceptor.doMove(MercurialInterceptor.java:208)
	at org.netbeans.modules.versioning.core.filesystems.VCSFilesystemInterceptor$DelegatingInterceptor.doMove(VCSFilesystemInterceptor.java:648)
	at org.netbeans.modules.versioning.core.filesystems.VCSFilesystemInterceptor$DelegatingInterceptor$1.handle(VCSFilesystemInterceptor.java:708)
	at org.netbeans.modules.remotefs.versioning.spi.FilesystemInterceptorProviderImpl$FilesystemInterceptorImpl$3.handle(FilesystemInterceptorProviderImpl.java:199)
	at org.netbeans.modules.remote.impl.fs.RemoteDirectory.renameChild(RemoteDirectory.java:760)
	at org.netbeans.modules.remote.impl.fs.RemoteFileObjectBase.renameImpl(RemoteFileObjectBase.java:699)
	at org.netbeans.modules.remote.impl.fs.RemoteFileObjectBase.rename(RemoteFileObjectBase.java:662)
	at org.netbeans.modules.remote.impl.fs.RemoteFileObject.rename(RemoteFileObject.java:238)
	at org.openide.loaders.FileEntry$Folder.rename(FileEntry.java:380)
	at org.openide.loaders.MultiDataObject.handleRename(MultiDataObject.java:636)
	at org.openide.loaders.DataFolder.handleRename(DataFolder.java:691)
	at org.openide.loaders.DataObject$1Op.run(DataObject.java:821)
	at org.openide.loaders.DataObject$1WrapRun.run(DataObject.java:1031)
	at org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:127)
	at org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:519)
	at org.openide.loaders.DataObjectPool.runAtomicActionSimple(DataObjectPool.java:229)
	at org.openide.loaders.DataObject.invokeAtomicAction(DataObject.java:1048)
	at org.openide.loaders.DataObject.rename(DataObject.java:836)
	at org.netbeans.modules.refactoring.impl.FolderRenameHandlerImpl.handleRename(FolderRenameHandlerImpl.java:87)
	at org.openide.loaders.DataFolder$FolderNode.setName(DataFolder.java:1373)
	at org.openide.nodes.FilterNode.setName(FilterNode.java:494)
	at org.openide.nodes.FilterNode.setName(FilterNode.java:494)
	at org.netbeans.modules.favorites.FavoritesNode$ProjectFilterNode.setName(FavoritesNode.java:510)
	at org.openide.explorer.view.ViewUtil.nodeRename(ViewUtil.java:124)
	at org.openide.explorer.view.ViewUtil$1.run(ViewUtil.java:118)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1443)
	at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:68)
	at org.openide.util.lookup.Lookups.executeWith(Lookups.java:303)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2058)
Comment 4 Vladimir Kvashin 2015-09-01 09:24:57 UTC
It's even worse: mercurial plugin starts reacting on this rename; so most time is spent in HgUtils.isIgnored and MercurialInterceptor.reScheduleRefresh

"Explorer Views"
	at org.netbeans.modules.mercurial.remote.util.HgUtils.isIgnored(HgUtils.java:420)
	at org.netbeans.modules.mercurial.remote.MercurialInterceptor.afterDelete(MercurialInterceptor.java:180)
	at org.netbeans.modules.versioning.core.filesystems.VCSFilesystemInterceptor$DelegatingInterceptor.afterDelete(VCSFilesystemInterceptor.java:638)
	at org.netbeans.modules.versioning.core.filesystems.VCSFilesystemInterceptor.deletedExternally(VCSFilesystemInterceptor.java:276)
	at org.netbeans.modules.remotefs.versioning.spi.FilesystemInterceptorProviderImpl$FilesystemInterceptorImpl.deletedExternally(FilesystemInterceptorProviderImpl.java:141)
	at org.netbeans.modules.remote.impl.fs.RemoteDirectory.fireDeletedEvent(RemoteDirectory.java:1366)
	at org.netbeans.modules.remote.impl.fs.RemoteDirectory.updateChildren(RemoteDirectory.java:1302)
	at org.netbeans.modules.remote.impl.fs.RemoteDirectory.getDirectoryStorageImpl(RemoteDirectory.java:1158)
	at org.netbeans.modules.remote.impl.fs.RemoteDirectory.refreshDirectoryStorage(RemoteDirectory.java:544)
	at org.netbeans.modules.remote.impl.fs.RemoteDirectory.refreshImpl(RemoteDirectory.java:1673)
	at org.netbeans.modules.remote.impl.fs.server.FSSTransport.refreshFast(FSSTransport.java:499)


"Explorer Views"
	at org.netbeans.modules.mercurial.remote.MercurialInterceptor.reScheduleRefresh(MercurialInterceptor.java:461)
	at org.netbeans.modules.mercurial.remote.MercurialInterceptor.afterDelete(MercurialInterceptor.java:186)
...