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 267625 - remote.Subversion should not perform huge operations in connection listener
Summary: remote.Subversion should not perform huge operations in connection listener
Status: RESOLVED FIXED
Alias: None
Product: cnd
Classification: Unclassified
Component: Remote VCS (show other bugs)
Version: 8.1
Hardware: PC Linux
: P2 normal (vote)
Assignee: Vladimir Kvashin
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-08-17 17:24 UTC by Vladimir Kvashin
Modified: 2016-08-20 02:16 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments
Stack trace (8.97 KB, text/plain)
2016-08-17 17:24 UTC, Vladimir Kvashin
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Vladimir Kvashin 2016-08-17 17:24:38 UTC
Created attachment 161704 [details]
Stack trace

When investigation the issue 267378 we found that remote subversion support performs a very lengthy operations when it is notified by ConnectionManager that connection occurred.

This ends up with calling a remote binaries just in the same thread. Such behaviour is not acceptable.

The stack fragment that shows this is as follows:
   at org.netbeans.modules.remotefs.versioning.api.ProcessUtils.execute(ProcessUtils.java:115)
   at org.netbeans.modules.remotefs.versioning.api.ProcessUtils.executeInDir(ProcessUtils.java:85)
   at org.netbeans.modules.subversion.remote.client.cli.Commandline.exec(Commandline.java:121)
   at org.netbeans.modules.subversion.remote.client.cli.CommandlineClient.exec(CommandlineClient.java:984)
   at org.netbeans.modules.subversion.remote.client.cli.CommandlineClient.getInfo(CommandlineClient.java:323)
   at org.netbeans.modules.subversion.remote.client.cli.CommandlineClient.getInfoFromWorkingCopy(CommandlineClient.java:968)
   at sun.reflect.GeneratedMethodAccessor150.invoke(GeneratedMethodAccessor150.java:0)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:497)
   at org.netbeans.modules.subversion.remote.client.SvnClientInvocationHandler.handle(SvnClientInvocationHandler.java:452)
   at org.netbeans.modules.subversion.remote.client.SvnClientInvocationHandler.invokeMethod(SvnClientInvocationHandler.java:397)
   at org.netbeans.modules.subversion.remote.client.SvnClientInvocationHandler$2.run(SvnClientInvocationHandler.java:217)
   at org.netbeans.modules.openide.util.DefaultMutexImplementation.readAccess(DefaultMutexImplementation.java:252)
   at org.openide.util.Mutex.readAccess(Mutex.java:250)
   at org.netbeans.modules.subversion.remote.client.SvnClientInvocationHandler.invoke(SvnClientInvocationHandler.java:222)
   at com.sun.proxy.$Proxy27.getInfoFromWorkingCopy(.java:0)
   at org.netbeans.modules.subversion.remote.util.SvnUtils.getInfoFromWorkingCopy(SvnUtils.java:1021)
   at org.netbeans.modules.subversion.remote.util.SvnUtils.getRepositoryRootUrl(SvnUtils.java:617)
   at org.netbeans.modules.subversion.remote.Subversion$GlobalInfo.run(Subversion.java:769)
   at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1443)
   at org.netbeans.modules.subversion.remote.Subversion$GlobalInfo.getTopmostRepositoryUrl(Subversion.java:755)
   at org.netbeans.modules.subversion.remote.Subversion$GlobalInfo.access$200(Subversion.java:739)
   at org.netbeans.modules.subversion.remote.Subversion.cacheIfNeededAllForTopmost(Subversion.java:731)
   at org.netbeans.modules.subversion.remote.Subversion.getTopmostManagedAncestor(Subversion.java:578)
   at org.netbeans.modules.subversion.remote.SubversionVCS.getTopmostManagedAncestor(SubversionVCS.java:111)
   at org.netbeans.modules.versioning.core.DelegatingVCS.getTopmostManagedAncestor(DelegatingVCS.java:190)
   at org.netbeans.modules.versioning.core.VersioningManager.getOwner(VersioningManager.java:452)
   at org.netbeans.modules.versioning.core.VersioningManager.getOwner(VersioningManager.java:348)
   at org.netbeans.modules.versioning.core.util.Utils.getOwner(Utils.java:175)
   at org.netbeans.modules.versioning.ui.history.HistoryComponent.getOwner(HistoryComponent.java:360)
   at org.netbeans.modules.versioning.ui.history.HistoryComponent.propertyChange(HistoryComponent.java:367)
   at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335)
   at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327)
   at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263)
   at org.netbeans.modules.versioning.core.VersioningManager.propertyChange(VersioningManager.java:605)
   at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335)
   at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327)
   at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263)
   at org.netbeans.modules.versioning.core.spi.VersioningSystem.fireVersionedFilesChanged(VersioningSystem.java:201)
   at org.netbeans.modules.subversion.remote.SubversionVCS.propertyChange(SubversionVCS.java:228)
   at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335)
   at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327)
   at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263)
   at org.netbeans.modules.subversion.remote.Subversion.versionedFilesChanged(Subversion.java:333)
   at org.netbeans.modules.subversion.remote.SubversionVCS.connected(SubversionVCS.java:234)
   at org.netbeans.modules.remotefs.versioning.impl.RemoteFileSystemConnectionManagerImpl.connected(RemoteFileSystemConnectionManagerImpl.java:98)
   at org.netbeans.modules.nativeexecution.api.util.ConnectionManager.fireConnected(ConnectionManager.java:262)
Comment 1 Vladimir Kvashin 2016-08-17 17:46:42 UTC
One of the "TODO" comments on the stack reads: "move this into a request processor" :)
Comment 2 Vladimir Kvashin 2016-08-18 10:54:28 UTC
fixed by
http://hg.netbeans.org/cnd-main/rev/0f099e7a343b
Comment 3 Quality Engineering 2016-08-20 02:16:20 UTC
Integrated into 'main-silver', will be available in build *201608200002* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)

Changeset: http://hg.netbeans.org/main-silver/rev/0f099e7a343b
User: Vladimir Kvashin <vkvashin@netbeans.org>
Log: fixed #267625 - remote.Subversion should not perform huge operations in connection listener