Jenkins 中的 SVN 签出有时会失败

2024-03-03

我们在 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 节点检查一个特定的存储库的组合时,就会发生这种情况。我们还有其他节点与这个节点几乎相同,但这种情况几乎从未发生过。我们还有其他存储库(无论大得多还是小得多),它们的检查次数都与此一样多,但几乎不会导致此问题。 repo和node的这种组合看起来是非常不利的。

值得注意的是,我们使用 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[此处] 讨论了标志。1 https://stackoverflow.com/questions/53341030/intermittent-svnexception-svn-e175002-connection-reset-when-updating-worksp


@m1haus 我想我明白了。发生这种情况是因为它从 svn 获取了太多文件并超时。我只是减少了文件数量并且有效

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jenkins 中的 SVN 签出有时会失败 的相关文章

随机推荐