欢迎!请参阅 关于 页面以了解更多有关此操作的信息。
clojure.java.process/start 中的 reification 的 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
nil
预期:此 IBlockingDeref 的实现始终假设时间单位硬编码为 TimeUnit/MILLISECONDS,并且如果 IBlockingDeref 的 deref 超时,则返回给定的 timeout-val。
请参阅 clojure/java/process.clj#L113
谢谢!已登录为https://clojure.atlassian.net/browse/CLJ-2865 - 我们将在1.12发布前修复此问题。