From d4c775b1f4985be4e279348ce027ef7402f8a498 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 16 Oct 2024 17:15:30 +0200 Subject: [PATCH] :bug: Fix unexpected rare condition exception on rpc cond middleware --- backend/src/app/rpc/cond.clj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/src/app/rpc/cond.clj b/backend/src/app/rpc/cond.clj index 3fe03c821..bf724d13f 100644 --- a/backend/src/app/rpc/cond.clj +++ b/backend/src/app/rpc/cond.clj @@ -48,20 +48,20 @@ (str "W/\"" (encode s) "\"")) (defn wrap - [_ f {:keys [::get-object ::key-fn ::reuse-key?] :as mdata}] + [_ f {:keys [::get-object ::key-fn ::reuse-key?] :or {reuse-key? true} :as mdata}] (if (and (ifn? get-object) (ifn? key-fn)) (do (l/trc :hint "instrumenting method" :service (::sv/name mdata)) (fn [cfg {:keys [::key] :as params}] (if *enabled* - (let [key' (when (or key reuse-key?) + (let [key' (when (or reuse-key? key) (some->> (get-object cfg params) (key-fn params) (fmt-key)))] (if (and (some? key) (= key key')) (fn [_] {::rres/status 304}) (let [result (f cfg params) etag (or (and reuse-key? key') - (some-> result meta ::key fmt-key) - (some-> result key-fn fmt-key))] + (some->> result meta ::key fmt-key) + (some->> result (key-fn params) fmt-key))] (rph/with-header result "etag" etag)))) (f cfg params)))) f))