请在2024 Clojure 状态调查分享您的想法!

欢迎!请浏览关于页面获取更多关于此工作的信息。

+4
tools.deps
添加了标签

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

我已经无法重现这个问题,并且有一段时间没有收到任何人关于这个问题的报告,因此目前不会创建工单。

无论是在工作中还是在快速网络环境下,我都无法重现该问题。
稍后我会从家中较慢的线路上再次尝试。
通过限制工作机器的带宽,我可以重现这个问题。

首先运行

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"}}}'


fails with


正在下载: com/twelvemonkeys/imageio/imageio-bmp/3.1.1/imageio-bmp-3.1.1.jar from central
正在下载: org/bytedeco/javacpp/1.5.7/javacpp-1.5.7-linux-arm64.jar from central
构建类路径错误。无法对 'artifact:org.bytedeco:leptonica:1.82.0-1.5.7' 获取写锁
java.lang.IllegalStateException: 无法对 'artifact:org.bytedeco:leptonica:1.82.0-1.5.7' 获取写锁
        at org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(N
谢谢,我想我明白为什么我们会再次看到这个问题,并且有一些事情要看看
0
by
我能复现这个问题

我在Windows上,使用MSYS下的Posix启动器。  安装脚本需要在prefix中指定Windows路径,然后就能正常安装。

在使用`clj`工具时我没有遇到问题,而是在运行`clojure -M:repl`时。

在下载过程中某个时刻,下载突然停止。  经过长时间的等待,我得到了上面的错误信息。

我的假设是可能存在某个死锁点。  NTFS对于文件锁定的要求比Linux更严格。  我可能会查看那里以及线程...

上述的解决方案可以为我解决这个问题。
by
(如果需要,我在Windows上通过Scoop安装了temurin-19-jdk,并将其bin目录添加到我的path中。)
by
啊哈——我终于发现了工单和那里的进度。  感谢你为此工作的努力!
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-Bit 服务器 VM Temurin-20.0.2+9 (构建 20.0.2+9, 混合模式)
```
by
我已更新了所有依赖项,包括 Maven 解析器中的大量锁定相关更新,想知道在你们遇到的情况中是否有任何不同。这个版本尚未发布为稳定版本,但如果您使用的是 Mac,可以 `brew uninstall clojure` 然后使用 `brew install clojure/tools/[email protected]` 来获得预发布 CLI。当然,请删除任何与 -Sthreads 1 相关的模块。
by
modified by
不确定是否有助于解决问题,但我在最新的 Clojure 中再次遇到了这个问题
```
2:46:25 error 正在下载:org/bytedeco/mkl/2020.3-1.5.4/mkl-2020.3-1.5.4-linux-x86_64-redist.jar from central
12:46:26 error 构建类路径错误。无法获得 'artifact:org.bytedeco:mkl:2020.3-1.5.4' 的写锁。
12:46:26 error 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] 下载中:从 central 下载 org/bytedeco/mkl/2020.3-1.5.4/mkl-2020.3-1.5.4-linux-x86-redist.jar
[2024-09-09T21:19:22.032Z] 在构建类路径时出错。无法获取 '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)
    at o
是的,我已经进行了部分升级到一套新的 Maven 库,我认为这会有所帮助,但这是一个巨大的变化。
...