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

欢迎!请查阅关于页以了解更多关于如何使用本站的信息。

0
工具依赖

你好,我在尝试让 AWS CDK 与 Datomic 云项目一起工作时遇到了这个问题(CLI 1.10.3.855)。似乎如果定义了 S3 仓库(例如,datomic 仓库)和某些依赖,CLI/deps 就会陷入无限解析循环。在第 855 次之后,我看到了相同的“正在下载:来自 <repo-alias>”消息,然后因为“打开文件太多”异常而崩溃。

以下是一个纯化版本 dependencies.edn,它会导致此问题。请注意,注释掉 :mvn/repos 会导致此问题消失。此外,即使在没有 :mvn/repos 定义的情况下,iam 和 core CDK 依赖本身似乎也不会导致此问题。

{: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 有所帮助。我对这可能是与套接字有关而不是实际文件这一点表示怀疑。但,需要进一步调查。

非常感谢!我不太清楚我在之前调查时发生了什么情况,但我后来确实能够在工具.deps 项目的REPL中使其失败。
顺便说一句,是的, sockets 哈哈。没有能够附上图片,但我调整了 JVM,允许我的 REPL 会话使用更多的文件句柄,运行时间大大延长,直到它失败前共打开了 25k 个端口
听起来可疑,谢谢。我会在某个时候更深入地研究这个问题,但可能要一段时间。
没问题。但,我认为我解决了它!我刚刚删除了将 http-client 显式传递给 aws/client 的代码。我有一个补丁,但我的 JIRA 账户还没有。
要提供一个补丁,我需要您遵循贡献者流程(签署贡献者协议,请求访问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代码,在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持续存在。

...