【问题标题】:Jenkins SVN "SSL peer shut down incorrectly" during checkout结帐期间 Jenkins SVN“SSL 对等方错误关闭”
【发布时间】:2014-02-06 17:45:39
【问题描述】:

我在使用 SVN 作为 SCM 通过 Jenkins 运行 maven 发布插件时遇到问题。

在检查大型项目时,我收到以下错误,我搜索了高低以寻找解决方案,但尚未提出任何解决方案,这似乎是使用 SVN Kit 的 Java SVN 客户端的问题。

svn: E175002: SSL peer shut down incorrectly

12:37:17    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)

12:37:17    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)

12:37:17    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:777)

12:37:17    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)

12:37:17    ... 34 more

12:37:17 Caused by: svn: E175002: REPORT request failed on '/svn/mx/!svn/vcc/default'

12:37:17    at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:208)

12:37:17    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:775)

12:37:17    ... 35 more

12:37:17 Caused by: svn: E175002: SSL peer shut down incorrectly

12:37:17    at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:109)

12:37:17    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:526)

12:37:17    ... 35 more

12:37:17 Caused by: javax.net.ssl.SSLException: SSL peer shut down incorrectly

12:37:17    at com.sun.net.ssl.internal.ssl.InputRecord.readV3Record(InputRecord.java:408)

12:37:17    at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:360)

12:37:17    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:830)

12:37:17    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:787)

12:37:17    at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)

12:37:17    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)

12:37:17    at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)

12:37:17    at java.io.BufferedInputStream.read(BufferedInputStream.java:317)

12:37:17    at org.tmatesoft.svn.core.internal.util.ChunkedInputStream.read(ChunkedInputStream.java:75)

12:37:17    at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:221)

12:37:17    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:141)

12:37:17    at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:90)

12:37:17    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)

12:37:17    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)

12:37:17    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)

12:37:17    at java.io.InputStreamReader.read(InputStreamReader.java:167)

12:37:17    at org.tmatesoft.svn.core.internal.io.dav.http.XMLReader.read(XMLReader.java:39)

12:37:17    at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742)

12:37:17    at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.peekChar(XMLEntityScanner.java:487)

12:37:17    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2688)

12:37:17    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)

12:37:17    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)

12:37:17    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)

12:37:17    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)

12:37:17    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)

12:37:17    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)

12:37:17    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)

12:37:17    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)

12:37:17    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.readData(HTTPConnection.java:911)

12:37:17    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.readData(HTTPConnection.java:876)

12:37:17    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPRequest.dispatch(HTTPRequest.java:220)

12:37:17    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:480)

Jenkins 允许我为标准作业重试结帐多次,所以这不是问题,因为我只是将重试次数设置为 5 并且它最终到达那里。

但是,当使用Maven Release Plugin进行发布时,在签出标签的阶段,SVN签出失败,整个发布失败。

我的 Maven 发布插件配置如下所示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.4.2</version>
    <configuration>
        <providerImplementations>
            <svn>javasvn</svn>
        </providerImplementations>
    </configuration>
    <dependencies>
    <dependency>
        <groupId>com.google.code.maven-scm-provider-svnjava</groupId>
        <artifactId>maven-scm-provider-svnjava</artifactId>
        <version>2.0.6</version>
        <scope>compile</scope>
    </dependency>
    </dependencies>
</plugin>

已选择该 SVN 版本以匹配 Jenkins 使用的版本。

所以我的问题是:

  • 如何修复该错误,我可以在任何地方设置请求超时,因为这似乎只是请求超时过快的情况。我在文档中找不到任何内容。
  • 我可以告诉 Maven 发布插件在签出标签时重试签出多次吗?

【问题讨论】:

  • 您是否使用 Java 6 运行构建?
  • 您能否尝试使用 Java 7 设置您的构建并执行新的 Maven 版本?可能问题与 SVNKit 和 Java 6 的错误有关。
  • 嗯,这是一个已知的错误吗?我们正在全面使用 Java 6,无论如何都无法升级以修复此错误
  • 无论如何似乎是一个不同的错误

标签: maven svn jenkins maven-release-plugin svnkit


【解决方案1】:

如果我正确理解错误消息,这不是 SVN 客户端的问题,而是服务器的问题。

您是否可以控制托管您的 SVN 存储库的服务器?在这种情况下,您可能应该增加服务器的 http 超时(我假设您通过 https 执行 svn),看看是否可以解决您的问题。

如果您使用的是 Apache,则应在 httpd.conf 文件中查找 TimeOut

更新:

如果情况确实是原生 svn 客户端从来没有任何问题,我建议使用该客户端而不是 javasvn 版本。如果我理解正确,maven 中的默认 svn 实现是使用命令行客户端,所以删除 maven-scm-provider-svnjava 依赖和 &lt;svn&gt;javasvn&lt;/svn&gt; 配置,应该使用默认值。 (我不是 maven 向导,您可能需要进行其他更改,当然您可能需要 svn 在 maven 可以找到的地方)

【讨论】:

  • 我无法控制该服务器,但我应该提到这只是 Jenkins 或 maven 发布插件的问题。在 unix 或 windows env 中使用标准 SVN 客户端时,从不 出现问题(即使在检查整个存储库时),所以我不认为这是服务器的问题。
  • 我已经更新了我的答案,建议使用本机 svn 而不是 java 版本。
  • 我认为这将修复 maven 版本,但为了使其与 Jenkins 一起使用,它们(maven + jenkins)都需要使用相同的 svn 客户端版本(这就是我添加这个的原因首先)。知道如何告诉 Jenkins 使用不同的 svn 客户端吗?使用 Jenkins SVN 插件:wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin
  • 据我所知,您在 Jenkins 和 maven 中不需要相同的 svn 实现。您确实需要兼容的版本(不是太旧或太新),所以如果您可以安装一个使用与 jenkins 相同格式的命令行版本,那应该可以工作。当然,这并不理想,但应该可以。
  • 另外,您可以选择让 maven 也执行“正常”检查:不要使用 jenkins svn 插件,而是每 x 分钟触发一次构建脚本并让构建脚本进行检查。 (也不完美,但应该可以)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 2018-05-17
  • 2015-05-08
  • 2015-08-15
  • 1970-01-01
相关资源
最近更新 更多