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

欢迎!请参阅关于页面以获取有关这一工作的更多信息。

0
tools.deps

嗨,我正在尝试让 AWS CDK 与 Datomic Cloud 项目配合工作,并遇到了这个问题(CLI 1.10.3.855)。看起来如果一个 S3 代码仓库(例如,datomic 仓库)被定义,并且定义了某些依赖项,CLI/deps 似乎会陷入无限解析循环。在某个时候,我会看到相同的“下载:来自 <repo-alias>”的消息,直到它崩溃并产生“打开文件过多”异常。

下面是一个简化版本的 deps.edn,它会引发问题。请注意,取消注释 :mvn/repos 会消除这个问题。此外,iam 和 core CDK 依赖(带有 :mvn/repos 定义)单独使用似乎也不会导致这个问题。

{:paths   ["src" "resources"]
 :deps    {org.clojure/clojure {:mvn/version "1.10.3"}
           ;com.datomic/ion                  {:mvn/version "0.9.50"},
           ;com.datomic/client-cloud         {:mvn/version "0.8.113"},
           }
 :mvn/repos
          {"datomic-cloud" {:url "s3://datomic-releases-1fc2183a/maven/releases"}}
 :aliases {:ion-dev {:extra-deps {com.datomic/ion-dev {:mvn/version "0.9.290"}}}
           :cdk     {:extra-paths ["cdk"]
                     :extra-deps  {
                                   software.amazon.awscdk/codebuild {:mvn/version "1.115.0"}
                                   ;software.amazon.awscdk/core      {:mvn/version "1.115.0"}
                                   ;software.amazon.awscdk/iam       {:mvn/version "1.115.0"}
                                   }}}}

2 个答案

+1

记录在https://clojure.atlassian.net/browse/TDEPS-199

我能够重现这个问题。某些并行操作可能会使错误变得令人困惑,所以使用-Sthreads 1在那里有助于一些。我有一点怀疑这更多与套接字有关,而不是真实文件。但这还需要进一步的调查。

by
非常感谢!是的,我不确定我之前调查时怎么了,随后我使它在 tools.deps 项目的 REPL 中失败。
by
只是顺便提醒一下,是的...套接字 Lol。无法上传图片,但调整 JVM 允许我的 REPL 会话更多的文件句柄后,它运行得更久,最终在失败前打开了 25k 个端口
by
听起来可疑,谢谢。我会在某个时候更深入地查看,但可能还要一段时间
by
没问题。不过,我认为我修复了它 ;). 我刚刚移除了将 http-client 明确传递给 aws/client 的代码。我有一个补丁,但没有 JIRA 账户。
by
要提供补丁,您需要遵循贡献者流程(签署贡献者协议、请求访问 jira、将补丁附加到 jira)。请参阅 https://clojure.org/dev/dev#_becoming_a_contributor

或者,如果您只想指出一些代码,也是可以的。
by
我已经填写了贡献协议,但在此期间,它在我的分支中:[点击此处查看](https://github.com/eoliphan/tools.deps.alpha)
0
by

更多的信息和奇怪之处。我决定自己检查它,简化了我的项目,并直接拉取了0.12.985。在REPL中运行以下代码会给我相同的错误

(require '[clojure.tools.deps.alpha :as deps])
  (require '[clojure.tools.deps.alpha.util.maven :as mvn])
  (deps/resolve-deps {:paths ["src" "resources"]
                      :deps  '{org.clojure/clojure              {:mvn/version "1.10.3"}
                               com.datomic/ion                  {:mvn/version "0.9.50"},
                               software.amazon.awscdk/codebuild {:mvn/version "1.115.0"}}
                      :mvn/repos
                             (merge mvn/standard-repos {"datomic-cloud" {:url "s3://datomic-releases-1fc2183a/maven/releases"}})} {})

但是…当我拉取了tools.deps.alpha代码,并在富评论块中运行相同的操作时,它运行正常。

 (print-tree
    (resolve-deps {:paths ["src" "resources"]
                   :deps  '{org.clojure/clojure              {:mvn/version "1.10.3"}
                            com.datomic/ion                  {:mvn/version "0.9.50"},
                            software.amazon.awscdk/codebuild {:mvn/version "1.115.0"}}
                   :mvn/repos
                          (merge mvn/standard-repos {"datomic-cloud" {:url "s3://datomic-releases-1fc2183a/maven/releases"}})}
      {}))

我最初认为这个问题在master分支已被修复,但即使检出0.12.985标签并重新运行,似乎也没有问题。在我的测试项目中,将tools.deps设置为:local/root或:git/url类型的依赖项会按预期工作。

因此,我猜测CLI.jar本身可能存在一些奇怪之处。我尝试升级到最新版的1.10.3.929,但通过CLI出现的问题依然存在。

...