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

欢迎!请参阅关于页面获取更多关于如何使用本站的信息。

0 投票
工具

DBFS(Databricks文件系统)未正确实现POSIX权限。
特别是bash标志“-w”无法正确检测项目目录的可写性。

因此,在我的情况下,尝试在DBFS上启动Clojure时尝试将.cpcache写入当前目录,但由于实际为只读,这失败了,无法覆盖。

有关详细信息,请参阅此处
https://clojurians.slack.com/archives/C03S1KBA2/p1726750856210489

更改Unix文件权限在DBFS上也同样失败

只是看到了这个相关的jira
https://clojure.atlassian.net/browse/TDEPS-119
我认为引入CLJ_PROJECT_CACHE的建议将解决我的当前问题。

1 答案

0 投票
ago by

这是否是 DataBricks 问题?

ago by
是的,或者我们接受“-w”并不是检测“只读”目录的可靠方法,我们找到一个Clojure脚本不依赖于它的方法,而且没有其他“强制”目录的方法。

不确定是否有其他文件系统存在类似问题。

DBFS 不支持任何“文件权限”,因此它永远不会在 DBFS 中得到解决。
ago by
当前的逻辑也将不允许在文件系统“满”的时候修改 .cpcache 的位置(例如,已满但可写)。
或者当除了“只读”以外的原因我不喜欢它的默认位置。
ago by
类路径通常很长,必须传递给Java进程。您可以选择通过命令行传递(但许多系统都有进程行长度限制),或者可以将类路径写入文件并通过这种方式传递。Clojure CLI执行后者,但这需要将文件写入某个位置的某处。该文件可以写入多个位置,并且需要逻辑来确定写入的正确位置。如果系统报告可以写入但不能写入,我不知道CLI应该如何应对(这看起来对下载Maven库、下载git库、准备git库以及CLI的工具.deps的许多其他功能都是一个问题)。

尝试写入文件以检查它们是否可以写入是不行的,因为我们使用文件的存在来检测缓存的文件是否存在。增加更多环境变量是不受欢迎的——已经有很多配置选项了,在很多情况下,这种逻辑存在于多个位置(bash和tools.deps clojure),这些位置必须保持同步,且所有读取/写入缓存的代码都必须达成一致。所有这些选项都有不同程度的缺点。
...