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

欢迎!有关本站如何运作的更多信息,请参阅关于 页面。

0
tools.deps

嗨,我在尝试将 AWS CDK 与 Datomic 云项目结合使用时遇到了这个问题(CLI 1.10.3.855)。看起来如果定义了一个 S3 仓库(例如,datomic 仓库)和某些依赖,CLI/deps 似乎会进入无限解析循环。在某个时刻,我看到一系列相同的“正在下载:从 <repo-alias>”消息,然后因为“打开文件过多”异常而崩溃。

下面是导致问题的简化版 deps.edn。请注意,注释掉 :mvn/repos 项可以消除问题。此外,IAM 和核心 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项目中让它失败。
只是告知一下,是的,socket相关。 我无法上传图片,但调整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](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 问题仍然存在

...