SVN 结帐有时会在 Jenkins 中失败



我们在 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 获取了太多文件并超时。我只是减少了文件数量,它起作用了

最新更新