欢迎!有关这个系统如何工作的更多信息,请参阅关于页面。
clojure.java.process 中 IBlockingDeref 的实现未按照 deref 文档字符串中的规范进行。
IBlockingDeref
deref
3 参数的 IBlockingDeref 预期 timeout 以毫秒为单位,第三参数是 timeout-val。clojure.java.process 中的实现(以下是链接的第 113 行)错误地期待前两个参数是一个带有其单位在最后一个参数中指定的 java.util.concurrent.TimeUnit 的超时。如果给定了某个 j.u.c.TimeUnit 作为 timeout-val,在超时后仍会返回 nil。
timeout
timeout-val
clojure.java.process
java.util.concurrent.TimeUnit
j.u.c.TimeUnit
nil
期望:这个 IBlockingDeref 的实现始终假定时单位硬编码为 TimeUnit/MILLISECONDS,并且在引用到 IBlockingDeref 时超时时,返回 timeout-val。
查看 clojure/java/process.clj#L113
谢谢!已记录https://clojure.atlassian.net/browse/CLJ-2865 - 我们将在1.12版本发布前修复这个问题。