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 帮助了一点点。我有点怀疑这更多与套接字有关,而不是实际的文件。但需要进一步调查。

非常感谢!嗯,我不太确定我之前调查时发生了什么,但我随后在 tools.deps 项目本身中成功让它失败。
只是为了告知一下,嗯,关于套接字。我无法上传图片,但是通过调整 JVM 以允许我的 REPL 会话有更多的文件句柄后,运行时间更长,最终在它失败之前打开了 25k 个端口。
听起来很可疑,谢谢。我会找个时间深入调查,但可能需要一段时间。
没问题。但我认为我已经解决了它!我刚刚移除了显式地传递 http-client 给 aws/client 的代码。我有一个补丁,但没有 JIRA 账户。
提供补丁,我需要您遵循贡献者流程(签署贡献者协议,请求访问Jira,将补丁附加到Jira)。请参阅https://clojure.org/dev/dev#_becoming_a_contributor

或者,如果您只是想指出某些代码,也是可以的。
已填写贡献者协议,但在此之前,它在我的分支上:[点击此处](https://github.com/eoliphan/tools.deps.alpha)
0

以下是一些更多信息(以及一些奇怪之处)。所以,我决定亲自看看,简化了我的项目并直接引入了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代码,在Rich Comment Block中运行了相同的操作,它运行得很好。

 (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的问题仍然存在

...