MVN部署到人工制品(大尺寸人工制品)出现管道损坏错误 [英] mvn deploy to artifactory (large size artifact) gives broken pipe error

查看:18
本文介绍了MVN部署到人工制品(大尺寸人工制品)出现管道损坏错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用mvn deploy命令将一个大的压缩文件(305 MB)部署到artiFactory,但我收到了管道断开的错误。我试着通过浏览器的"部署"按钮上传相同的文件,效果很好。

是否有设置可以用来增加套接字超时,或强制maven/artiFactory等待程序包上载?

任何有关如何解决此问题的帮助都将不胜感激。以下是日志条目和堆栈跟踪:

May 09, 2016 11:16:32 AM org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec execute
INFO: Retrying request to {}->http://mvnrepo.dev.xyz.myorg.net:8080
May 09, 2016 11:17:02 AM org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec execute
INFO: I/O exception (java.net.SocketException) caught when processing request to {}->http://mvnrepo.dev.xyz.myorg.net:8080: Broken pipe
May 09, 2016 11:17:02 AM org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec execute
INFO: Retrying request to {}->http://mvnrepo.dev.xyz.myorg.net:8080


Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact com.myorg.xyz.myapp:my-app-package:zip:0.1-svc20160509.151532-7 from/to xyz-service-snapshots (http://mvnrepo.dev.xyz.myorg.net:8080/artifactory/xyz-service-local): Broken pipe
    at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:43)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:355)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector.put(BasicRepositoryConnector.java:274)
    at org.eclipse.aether.internal.impl.DefaultDeployer.deploy(DefaultDeployer.java:311)
    ... 26 more
Caused by: org.apache.maven.wagon.TransferFailedException: Broken pipe
    at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.put(AbstractHttpClientWagon.java:662)
    at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.put(AbstractHttpClientWagon.java:557)
    at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.put(AbstractHttpClientWagon.java:539)
    at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.put(AbstractHttpClientWagon.java:533)
    at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.put(AbstractHttpClientWagon.java:513)
    at org.eclipse.aether.transport.wagon.WagonTransporter$PutTaskRunner.run(WagonTransporter.java:644)
    at org.eclipse.aether.transport.wagon.WagonTransporter.execute(WagonTransporter.java:427)
    at org.eclipse.aether.transport.wagon.WagonTransporter.put(WagonTransporter.java:410)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$PutTaskRunner.runTask(BasicRepositoryConnector.java:510)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:350)
    ... 28 more
Caused by: java.net.SocketException: Broken pipe
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:159)
    at org.apache.maven.wagon.providers.http.httpclient.impl.io.SessionOutputBufferImpl.streamWrite(SessionOutputBufferImpl.java:123)
    at org.apache.maven.wagon.providers.http.httpclient.impl.io.SessionOutputBufferImpl.flushBuffer(SessionOutputBufferImpl.java:135)
    at org.apache.maven.wagon.providers.http.httpclient.impl.io.SessionOutputBufferImpl.write(SessionOutputBufferImpl.java:164)
    at org.apache.maven.wagon.providers.http.httpclient.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:115)
    at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon$RequestEntityImplementation.writeTo(AbstractHttpClientWagon.java:204)
    at org.apache.maven.wagon.providers.http.httpclient.impl.DefaultBHttpClientConnection.sendRequestEntity(DefaultBHttpClientConnection.java:155)
    at org.apache.maven.wagon.providers.http.httpclient.impl.conn.CPoolProxy.sendRequestEntity(CPoolProxy.java:149)
    at org.apache.maven.wagon.providers.http.httpclient.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:236)

推荐答案

常规

Broken pipe错误通常表示网络问题。如果您有网络问题(部署过程中丢失了包),或者您的ArtiFactory存储库的空间已用完(存储库上的物理内存),则在ArtiFactory上部署构件可能会失败,并出现此错误。检查案例1案例2以了解疑难解答。

提示:运行mvn deploy -X-X选项将记录与您错误相关的进一步信息(将日志级别设置为调试)

案例1:网络问题

解决方案:只需重试:)

问题详细信息

Maven的source code似乎使用了Apache的Validate方法(在验证错误时抛出一个IllegalArgumentException)来比较和验证部署的构件和本地构建的构件的大小。注意:在deploy上,Maven在本地构建构件,然后将其上载到配置的存储库(可以是ArtiFactory、Maven Central等),在您的例子中是ArtiFactory。

错误应如下所示:

[DEBUG] Failed to dispatch transfer event 'PUT PROGRESSED [ARTIFACT_SERVER_URL]/artifact.jar <> [LOCAL_PATH]/artifact.jar
java.lang.IllegalArgumentException: progressed file size cannot be greater than size: 117964800 > 116927216
   at org.apache.commons.lang3.Validate.isTrue (Validate.java:158)
   at org.apache.maven.cli.transfer.AbstractMavenTransferListener$FileSizeFormat.formatProgress (AbstractMavenTransferListener.java:195)
   at org.apache.maven.cli.transfer.ConsoleMavenTransferListener.getStatus (ConsoleMavenTransferListener.java:117)
   at org.apache.maven.cli.transfer.ConsoleMavenTransferListener.transferProgressed (ConsoleMavenTransferListener.java:90)
   ...

案例2:ArtiFactory存储库上没有剩余空间

解决方案:释放ArtiFactory存储库上的空间

问题详细信息

对于与部署到artiFactory相关的任何错误,您始终可以从Web应用程序检查ArtiFactory的日志。 只需导航(从边栏)到Admin/Advanced/System Logs。检查日志文件中是否有任何错误或警告。 与可用空间相关的错误可能如下所示:

2021-08-18 11:20:43,339 [http-nio-8081-exec-19] [WARN ] (o.a.w.s.RepoFilter  :252) - Sending HTTP error code 404: No space left on device
2021-08-18 11:20:43,346 [http-nio-8081-exec-16] [WARN ] (o.a.r.s.RepositoryServiceImpl:1739) - Datastore disk is too high: Warning limit: 80%, Used: 94%, Total: 688.01 GB, Used: 652.97 GB, Available: 35.04 GB
2021-08-18 11:20:43,346 [http-nio-8081-exec-16] [INFO ] (o.a.e.UploadServiceImpl:386) - Deploy to 'libs-snapshot-local:artifact.jar' Content-Length: 170019165
2021-08-18 11:20:44,086 [http-nio-8081-exec-16] [ERROR] (o.a.w.s.RepoFilter  :251) - Upload request of libs-snapshot-local:artifact.jar failed due to {}
java.io.IOException: No space left on device
    at java.io.FileOutputStream.writeBytes(Native Method)
    at java.io.FileOutputStream.write(FileOutputStream.java:326)
   ...

如果您确实发现了此类错误,请尝试删除一些旧项目以释放空间,然后稍后重试部署

提示:最好为ArtiFactory上的旧项目/快照设置一些清除策略。

这篇关于MVN部署到人工制品(大尺寸人工制品)出现管道损坏错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆