大家好,我在升级到 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"
经过一些尝试和错误,似乎是由于局部参数 i.e :some-keyword 导致的差异,在 clj-uuid/v5 函数中,它会将关键字对象转换为字节数组,这似乎现在是不同的。(如果我用字符串而不是关键字作为局部参数,则生成的 uuid 在 Clojure 升级前后都是一致的。)
生产的 uuids 用于下游系统,处理这些变化会相当困难。我能否以完全相同的方式获得之前的 uuids?