我们在 Jenkins 中使用 SVN 结账时遇到了一段时间的问题。它有时会失败并显示以下错误:
org.tmatesoft.svn.core.SVNException: svn: E175002: Connection reset svn: E175002: REPORT request failed on '/Our-project/!svn/vcc/default' at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:112) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:96) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:765) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:352) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:340) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:910) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.doReport(DAVConnection.java:363) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.runReport(DAVRepository.java:1349) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.update(DAVRepository.java:847) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgAbstractUpdate.updateInternal(SvnNgAbstractUpdate.java:263) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgAbstractUpdate.update(SvnNgAbstractUpdate.java:115) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgAbstractUpdate.checkout(SvnNgAbstractUpdate.java:877) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCheckout.run(SvnNgCheckout.java:26) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCheckout.run(SvnNgCheckout.java:11) at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgOperationRunner.run(SvnNgOperationRunner.java:20) at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:21) at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1239) at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294) at hudson.scm.subversion.CheckoutUpdater$SubversionUpdateTask.perform(CheckoutUpdater.java:132) at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:168) at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:176) at hudson.scm.subversion.UpdateUpdater$TaskImpl.perform(UpdateUpdater.java:133) at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:168) at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:1040) at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:1016) at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:989) at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3052) at hudson.remoting.UserRequest.perform(UserRequest.java:212) at hudson.remoting.UserRequest.perform(UserRequest.java:54) at hudson.remoting.Request$2.run(Request.java:369) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:93) at java.lang.Thread.run(Unknown Source) Caused by: java.net.SocketException: Connection reset
最近它开始发生更多,当一个特定的 Jenkins 节点签出一个特定存储库的组合时,就会发生这种情况。我们还有其他节点,它们与这个节点几乎相同,它实际上从未发生过。我们还有其他存储库(明显更大和更小(,它们正在签出与此存储库一样多,但几乎不会引起此问题。这种回购和节点的组合似乎非常不利。
值得注意的是,我们正在使用 Jenkins 插件,并通过以下方式通过 Groovy 进行结帐:
checkout(
[$class: 'SubversionSCM',
locations:
[
[credentialsId: '6615cd79-bd58-42f8-1111-6fa9e5692f92',
remote: <SVN URL>,
local: 'our_dir']
],
workspaceUpdater: [$class: 'UpdateWithCleanUpdater']])
当我们直接运行SVN命令进行结帐时,我们永远不会遇到这个问题,这意味着不稳定必须存在于插件中。但是,出于其他原因,我们确实需要继续使用该插件。
当节点受到压力时,即当它在不同的执行器上同时运行多个结帐时,它似乎也会更频繁地发生。
如有任何关于如何解决这个问题的意见,将不胜感激。
我们尝试使用[此处]讨论的-Dhudson.spool-svn
标志未成功。
@m1haus我想我明白了。发生这种情况是因为它从 svn 获取了太多文件并超时。我只是减少了文件数量,它起作用了