嗨,我在升级到 Clojure 1.11.0 时遇到了以下问题。在我们的应用程序中,我们使用 danlentz/clj-uuid 库创建了某些 V5(基于名称,SHA1 哈希)uuid,在升级后产生的 v5 uuid 不同。一个例子如下:
(def ^:const +namespace+ #uuid "50d94d91-a1cf-422d-9586-4ddacf6df176")
(clj-uuid/v5 +namespace+ :some-keyword)
;; Clojure 1.10.3
=> #uuid "d30e9c3c-ced2-534e-a6b8-ecf784fb0785"
;; Clojure 1.11.0
=> #uuid "a16f6719-952a-55b9-b71b-b15dd263665b"
经过一番试验和错误,我发现这似乎是由局部参数(即 :some-keyword)造成的差异,因为在 clj-uuid/v5 fn 中,它将 keyword 对象转换为字节序列,现在似乎不同了。(如果我用字符串而不是关键字作为局部参数,则产生的 uuid 在 Clojure 升级前后是一致的。)
产生的 uuids 用在下游系统中,它们处理这种变化会很困难。我是否可以实现与之前完全相同的 uuid?