Details
-
Bug
-
Resolution: Fixed
-
Low
-
3.3.2
-
None
-
None
Description
SVNKit could show slowness for file:// protocol although native svn client is very responsive. Eg. native client returned very quickly
$ svn diff --summarize -r 44421:44422 file:///home/czawadka/repos/X@44422
real 4m3.358s
user 1m54.759s
sys 0m52.803s
but the same command using jsvn has been running for over 1h still without success.
Eventually Fisheye using SVNKit fails with
2014-04-14 11:15:21,785 ERROR - Problem processing revisions from repo X due to class com.cenqua.fisheye.rep.RepositoryClientException - org.apache.subversion.javahl.ClientException: svn: E135003: Unable to make name for '/data/atlas sian/fisheye/data/var/tmp/svn' com.cenqua.fisheye.rep.RepositoryClientException: org.apache.subversion.javahl.ClientException: svn: E135003: Unable to make name for '/data/atlassian/fisheye/data/var/tmp/svn' at com.cenqua.fisheye.svn.SvnThrottledClient.executeNoThrottle(SvnThrottledClient.java:176) at com.cenqua.fisheye.svn.SvnThrottledClient.execute(SvnThrottledClient.java:145) at com.cenqua.fisheye.svn.SvnThrottledClient.diff(SvnThrottledClient.java:201) at com.atlassian.fisheye.svn.Svn2Infill2Processor.processDiffPaths(Svn2Infill2Processor.java:742) at com.atlassian.fisheye.svn.Svn2Infill2Processor.infillChangeSet(Svn2Infill2Processor.java:256) at com.atlassian.fisheye.svn.Svn2Infill2Processor.access$100(Svn2Infill2Processor.java:81) at com.atlassian.fisheye.svn.Svn2Infill2Processor$1.perform(Svn2Infill2Processor.java:128) at com.atlassian.fisheye.svn.Svn2Infill2Processor$1.perform(Svn2Infill2Processor.java:113) at com.cenqua.fisheye.cache.BaseRevisionCache.withDbWriteLock(BaseRevisionCache.java:1014) at com.atlassian.fisheye.svn.Svn2Infill2Processor.process(Svn2Infill2Processor.java:113) at com.atlassian.fisheye.svn.Svn2Scanner.slurpRepository(Svn2Scanner.java:210) at com.atlassian.fisheye.svn.Svn2Scanner.doSlurpTransaction(Svn2Scanner.java:179) at com.cenqua.fisheye.rep.BaseRepositoryScanner.ping(BaseRepositoryScanner.java:75) at com.cenqua.fisheye.rep.BaseRepositoryEngine.doSlurp(BaseRepositoryEngine.java:86) at com.cenqua.fisheye.rep.RepositoryEngine.slurp(RepositoryEngine.java:397) at com.cenqua.fisheye.rep.ping.IndexingPingRequest.doRequest(IndexingPingRequest.java:25) at com.cenqua.fisheye.rep.ping.IncrementalPingRequest.doRequest(IncrementalPingRequest.java:30) at com.cenqua.fisheye.rep.ping.PingRequest.process(PingRequest.java:54) at com.cenqua.fisheye.rep.RepositoryHandle.processPingRequests(RepositoryHandle.java:219) at com.cenqua.fisheye.rep.RepositoryHandle.access$100(RepositoryHandle.java:56) at com.cenqua.fisheye.rep.RepositoryHandle$2.run(RepositoryHandle.java:175) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: org.apache.subversion.javahl.ClientException: svn: E135003: Unable to make name for '/data/atlassian/fisheye/data/var/tmp/svn' at org.apache.subversion.javahl.ClientException.fromException(ClientException.java:68) at org.tmatesoft.svn.core.javahl17.SVNClientImpl.getClientException(SVNClientImpl.java:1294) at org.tmatesoft.svn.core.javahl17.SVNClientImpl.diff(SVNClientImpl.java:1008) at org.apache.subversion.javahl.SVNClient.diff(SVNClient.java:182) at com.cenqua.fisheye.svn.SvnThrottledClient$3.call(SvnThrottledClient.java:205) at com.cenqua.fisheye.svn.SvnThrottledClient$3.call(SvnThrottledClient.java:202) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at com.cenqua.fisheye.svn.SvnTask.run(SvnTask.java:34) ... 3 more Caused by: org.tmatesoft.svn.core.SVNException: svn: E135003: Unable to make name for '/data/atlassian/fisheye/data/var/tmp/svn' at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64) at org.tmatesoft.svn.core.internal.wc.SVNFileUtil.createUniqueFile(SVNFileUtil.java:544) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgRemoteDiffEditor2.applyTextDelta(SvnNgRemoteDiffEditor2.java:315)
which suggests the SVNKit failed to create temporary file after 99999 tries.
There are two problems:
- svnkit should use much less expensive way to find unique file
- tmp files are not removed from tmp folder
Workaround 0
Use native SVN client as described in https://confluence.atlassian.com/display/FISHEYE/Native+Subversion+Client
Workaround 1
Stop Fisheye, remove FISHEYE_INST/var/tmp/svn folder and start Fisheye again - https://answers.atlassian.com/questions/279448/deleting-fisheye-temporary-files
Workaround 2
another workaround is to change the URL from file:// to be remote URL (eg: HTTP) to index the problematic changeset and switch back to file:// protocol later on