大家好,我更新到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部分参数(即::some-keyword)导致了差异,因为在clj-uuid/v5函数中,关键字对象被转换为字节数组,现在看起来不同了。(如果我用字符串代替关键字作为local部分参数,则生成的UUID在升级Clojure之前和之后都是一致的。)
生成的UUID用于下游系统,因此很难处理这种变化。是否有办法生成与之前完全相同的UUID呢?