您好,在升级到 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"
经过一些试错,似乎是由于 local part 参数(即::some-keyword)导致差异,因为在 clj-uuid/v5 函数中,它将 keyword Object 转换为 ByteArray,而现在看来它与之前不同。(如果我使用 String 而不是 keyword 作为 local part 参数,那么产生的 uuid 在 Clojure 升级前后都是一致的。)
产生的 uuid 用在下游系统中,并且处理这种变化相当困难。有没有什么办法可以产生与之前完全相同的 uuid 呢?