2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!请参阅 关于 页面以了解有关如何使用此页面的一些详细信息。

+1 投票
工具

Clojars 闪现问题导致持续集成运行失败

构建类路径出错。无法传输工件
rewrite-clj:rewrite-clj:jar:1.1.45 从 clojars 处转换
https://repo.clojars.org/):连接到 repo.clojars.org:443
[repo.clojars.org/146.75.29.128] 失败:连接超时 401 错误
进程以退出代码 1 完成。

觉得在下载依赖项时在 tools.deps 中添加一些重试来处理暂时性失败是否是个好主意吗?

1 个答案

0 投票
by

401 表示未授权。这似乎不是我们想要重试的错误?

我不确定我们能否区分重试是否有价值的情况(这可能与 Maven 库的一些内容相关)。

by
其他方面,Maven可能会尝试多个仓库以找到包含该组件的仓库。增加重试可能会使搜索耗时更长,或者为所有仓库增加大量流量。
by
我们在CI(持续集成)中经常遇到类似的错误,尽管不是401错误。重新构建似乎总能解决问题。

从clojars下载:metosin/muuntaja/0.6.8/muuntaja-0.6.8.pom
...
构建类路径时出错。无法读取metosin:muuntaja:jar:0.6.8的组件描述符
org.eclipse.aether.resolution.ArtifactDescriptorException: 无法读取metosin:muuntaja:jar:0.6.8组件描述符
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:259)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:175)
    at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:255)
    at clojure.tools.deps.alpha.extensions.maven$fn__1061.invokeStatic(maven.clj:132)
    at clojure.tools.deps.alpha.extensions.maven$fn__1061.invoke(maven.clj:122)
    at clojure.lang.MultiFn.invoke(MultiFn.java:244)
    at clojure.tools.deps.alpha$expand_deps$children_task__754$fn__756$fn__757.invoke(alpha.clj:406)
    at clojure.tools.deps.alpha.util.concurrent$submit_task$task__479.invoke(concurrent.clj:35)
    at clojure.lang.AFn.call(AFn.java:18)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
原因:org.eclipse.aether.resolution.ArtifactResolutionException: 无法从clojars将 artifact metosin:muuntaja:pom:0.6.8 传输到 (/ci/.m2/repository/metosin/muuntaja/0.6.8/muuntaja-0.6.8.pom.part (没有找到文件或目录))
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:425)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:229)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:207)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:244)
    ... 12 more
原因:org.eclipse.aether.transfer.ArtifactTransferException: 无法从clojars将 artifact metosin:muuntaja:pom:0.6.8 传输到 (/ci/.m2/repository/metosin/muuntaja/0.6.8/muuntaja-0.6.8.pom.part (没有找到文件或目录))
    at org.eclipse.aether.connector.basic(ArtifactTransportListener.java:52)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:369)
    at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:75)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:628)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:262)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:514)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:402)
    ... 15 more
原因:java.io.FileNotFoundException: /ci/.m2/repository/metosin/muuntaja/0.6.8/muuntaja-0.6.8.pom.part (没有找到文件或目录)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
    at org.eclipse.aether.internal.impl.DefaultFileProcessor.copy(DefaultFileProcessor.java:163)
    at org.eclipse.aether.internal.impl.DefaultFileProcessor.copy(DefaultFileProcessor.java:151)
    在 org.eclipse.aether.internal.impl.DefaultFileProcessor.move(DefaultFileProcessor.java:252) 方法中
    在 org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:482) 方法中
    在 org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:364) 方法中
    ... 更多 20 个结果
by
上面的长堆栈跟踪是由于本地文件缺失造成的,不是网络资源定位问题

   原因:java.io.FileNotFoundException: /ci/.m2/repository/metosin/muuntaja/0.6.8/muuntaja-0.6.8.pom.part (没有此文件或目录)

由于对 ci 设置了解更多,很难说明,但可能是共享 /ci 文件系统有问题
by
我回过头来看了日志,401 是我复制时包含的日志行的行号。

以下是带有时间戳的日志

00:21:14 GMT 从 central 下载 org/clojure/data.codec/0.1.0/data.codec-0.1.0.jar
00:21:14 GMT 从 central 下载 com/amazonaws/jmespath-java/1.11.713/jmespath-java-1.11.713.jar
00:21:14 GMT 从 clojars 下载 clj-commons/pomegranate/1.2.1/pomegranate-1.2.1.jar
00:21:24 GMT 错误:构建类路径时出错。无法从 clojars (https://repo.clojars.org/):" rel="nofollow" target="_blank">Connect to repo.clojars.org:443 [repo.clojars.org/146.75.29.128] failed: Connect timed out 传输工件 rewrite-clj:rewrite-clj:jar:1.1.45
00:21:24 GMT 错误:进程以退出代码 1 完成。

如果您打算重试,我认为您可能需要捕获 ConnectTimeoutException: https://www.javadoc.io/doc/org.apache.httpcomponents/httpclient/4.3.4/org/apache/http/conn/ConnectTimeoutException.html
by
401 哈哈。

如果我们可以在适当的位置区分工件不存在和服务不可用的情况,我就接受这个想法。对我来说并不清楚我们是否有这种机会并清楚地告诉,因此需要更多的调查。
...