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

欢迎!请参阅“关于”页面,了解更多关于此功能的信息。

0
tools.deps

嗨,我在尝试让 AWS CDK 与 Datomic Cloud 项目结合使用时遇到了这个问题(CLI 1.10.3.855)。看起来如果定义了一个 S3 仓库(例如,datomic 仓库)并定义了某些依赖项,CLI/deps 似乎会陷入无限循环。在某个点之后,我看到了相同的“正在下载:来自 ”消息,直到它因为“打开文件太多”异常而崩溃。

下面是引起问题的简化版本的 deps.edn。请注意,取消注释冒号 :mvn/repos 的问题。此外,不带 :mvn/repos 定义的自定义和核心 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 项目自身中使其在 REPL 中失败。
仅供参考,嘛……套接字。图片无法附加,但经过调整 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 仍然存在这个问题

...