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

非常感谢!嗯,我不确定我之前在调查时所遇到的情况,但我随后能够让工具的.deps项目在本地的REPL中失败。
只是想告诉大家一下,是的.. 套接字哦。无法上传图片,但我将JVM调整到允许REPL会话使用更多文件处理程序后,它运行得更久,失败了之前打开了25000个端口。
听起来可疑,谢谢。我会在某个时候深入了解,但这可能要一段时间。
没问题。不过,我想我已经修复了它;)我只是移除了显式将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仍然存在。

...