2024 Clojure 发展状况调查 中分享你的看法!

欢迎!请查看 关于 页面以获取更多关于如何使用本站的信息。

+4
工具依赖项
重新标记

depes.edn

{:deps {org.deeplearning4j/deeplearning4j-nlp {:mvn/version "1.0.0-M2.1"}}}

这个问题在更早的Clojure版本中曾经出现过,然后消失了,请见这里

https://clojurians-log.clojureverse.org/tools-deps/2021-09-16

但现在我用最新的clojure CLI再次遇到这个问题
1.11.1.1200

解决办法仍是限制下载线程的数量;

clj -Sthreads 1

所以只有我在使用(默认的)多线程下载时遇到这个问题。

2 个回答

+2

我无法重现这个问题,一段时间内也没有收到其他人的类似报告,所以目前不打算创建工单。

无论是在工作环境中还是在网络快速的情况下,我都无法重现这个问题。
稍后我会再从家中尝试,使用慢速的网络。
by
通过限制我的工作机器的带宽,我能够重现这个问题。

首先运行以下命令

sudo wondershaper -a eth0 -d 1024 -u 1024

将下载带宽限制为1MBit/s

然后从最新的Clojure Docker镜像启动clj

docker run -ti clojure clj -Sdeps '{:deps {org.deeplearning4j/deeplearning4j-nlp {:mvn/version "1.0.0-M2.1"}}}'


失败并显示以下错误


正在下载:com/twelvemonkeys/imageio/imageio-bmp/3.1.1/imageio-bmp-3.1.1.jar 来自中央仓库
正在下载:org/bytedeco/javacpp/1.5.7/javacpp-1.5.7-linux-arm64.jar 来自中央仓库
构建类路径时出错。无法获取“artifact:org.bytedeco:leptonica:1.82.0-1.5.7”的写锁
java.lang.IllegalStateException: 无法获取“artifact:org.bytedeco:leptonica:1.82.0-1.5.7”的写锁
...(此处省略代码行)...
by
谢谢,我想我已经明白了我们再次看到这个问题的原因,有一些事情需要检查
0
by
by
我能够重现这个问题

我使用Windows操作系统,在MSYS下使用Posix可执行文件。安装脚本需要Windows路径作为前缀,然后安装正常。

我在`clj`工具中没有遇到问题,但有问题是当运行`clojure -M:repl`时。

在下载过程中某个时候,下载突然停止。  经过长时间等待后,我看到上面的错误消息。

我的假设是存在死锁。  NTFS在文件锁定方面比Linux更严格。  我可能要在那里查找问题,同时也要看看线程...

上面描述的 workaround 解决了我的问题。
by
(如果这有关系,我在 Windows 上通过 Scoop 安装了 temurin-19-jdk,并将其 bin 目录添加到我的路径。)
by
Ahhh - 我刚好注意到那个票据和那里的进度。  感谢您为此做出的努力!
by
仅仅补充一下,删除 ".m2" 后,它再次出现在 org/bytedeco/mkl/2020.3-1.5.4/mkl-2020.3-1.5.4-linux-x86-redist.jar(这是一个大文件)
并且确实 "clj -Sthreads 1" 修复了它。
by
你好,

这里我也补充一下,我在我的 MBP M1 上每次都能100%重现这个问题。

```
构建类路径错误。 无法获取 'artifact:org.apache:apache:25' 的写锁
java.lang.IllegalStateException: 无法获取 'artifact:org.apache:apache:25' 的写锁
    在 org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(NamedLockFactoryAdapter.java:165)
    在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:233)
    在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:212)
...
...
```

```
❯ clj --version
Clojure CLI 版本 1.11.1.1413
```

```
❯ java --version
openjdk 20.0.2 2023-07-18
OpenJDK 运行时环境 Temurin-20.0.2+9 (构建版本 20.0.2+9)
OpenJDK 64位服务器虚拟机 Temurin-20.0.2+9 (构建版本 20.0.2+9, 混合模式)
```
我已经更新了所有依赖项,包括Maven解析器中的大量锁定相关更新。我很想了解,经历这些情况时,是否有任何差异。这个版本还不是稳定版,但如果您使用Mac,您可以通过以下命令获取预发布CLI:`brew uninstall clojure` 然后 `brew install clojure/tools/[email protected]`。当然,请移除所有与-Sthreads 1相关的模块。
不确定这是否有帮助,但我今天在最新的Clojure中又遇到了这个问题
```
2:46:25 错误:从central下载:org/bytedeco/mkl/2020.3-1.5.4/mkl-2020.3-1.5.4-linux-x86_64-redist.jar
12:46:26 错误:构建classpath时出错。无法获取'artifact:org.bytedeco:mkl:2020.3-1.5.4'的写锁
12:46:26 错误:java.lang.IllegalStateException:无法获取'artifact:org.bytedeco:mkl:2020.3-1.5.4'的写锁
....
```
正在使用1.11.3.1456

因为它在Docker构建中,所以我可以确保在每个容器创建时都能复现这个问题
常见的修复方法是:"-Sthreads 1"

在此期间,我已将我的互联网连接升级为光纤,但问题仍然存在....
因此,我认为它只出现在“慢速网络”上的假设是不正确的。
这个问题仍然存在于Clojure 1.12上
偶尔出现,和以前一样。

[2024-09-09T21:19:21.048Z] 正在下载:org/bytedeco/mkl/2020.3-1.5.4/mkl-2020.3-1.5.4-linux-x86-redist.jar 从 central
[2024-09-09T21:19:22.032Z] 构建classpath时出错。无法获取'artifact:org.bytedeco:mkl:2020.3-1.5.4'的写锁
2024-09-09T21:19:22.032Z

java.lang.IllegalStateException: 无法获取 'artifact:org.bytedeco:mkl:2020.3-1.5.4' 的写锁
    在 org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(NamedLockFactoryAdapter.java:165)
2024-09-09T21:19:22.032Z
    在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:233)
    在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:212)
    在 o
by
是的,我对 Maven 库的新版本进行了一部分升级,这应该会有所帮助,但这是一个很大的变化。
...