From b739d8bd0cb70cf5abb6b8de12d50d71a4dba5a7 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 3 Jul 2025 10:50:47 +0200 Subject: [PATCH 1/7] :lipstick: Change default depth on params for error reports --- backend/src/app/loggers/database.clj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/src/app/loggers/database.clj b/backend/src/app/loggers/database.clj index 196845a967..00accbde55 100644 --- a/backend/src/app/loggers/database.clj +++ b/backend/src/app/loggers/database.clj @@ -67,15 +67,15 @@ (some-> cause (ex/format-throwable :data? false :explain? false :header? false :summary? false)))} (when-let [params (or (:request/params context) (:params context))] - {:params (pp/pprint-str params :length 30 :level 13)}) + {:params (pp/pprint-str params :length 20 :level 15)}) (when-let [value (:value context)] - {:value (pp/pprint-str value :length 30 :level 12)}) + {:value (pp/pprint-str value :length 30 :level 13)}) (when-let [data (some-> data (dissoc ::s/problems ::s/value ::s/spec ::sm/explain :hint))] - {:data (pp/pprint-str data :length 30 :level 12)}) + {:data (pp/pprint-str data :length 30 :level 13)}) - (when-let [explain (ex/explain data :length 30 :level 12)] + (when-let [explain (ex/explain data :length 30 :level 13)] {:explain explain}))))) (defn error-record? From 96d6868b45c4c2a1f73c7bec24e89d1263930d5a Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 3 Jul 2025 10:51:22 +0200 Subject: [PATCH 2/7] :bug: Add missing fields on get-team-shared-files query --- backend/src/app/rpc/commands/files.clj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/src/app/rpc/commands/files.clj b/backend/src/app/rpc/commands/files.clj index 83140780fd..16a53e8b5b 100644 --- a/backend/src/app/rpc/commands/files.clj +++ b/backend/src/app/rpc/commands/files.clj @@ -559,6 +559,8 @@ f.project_id, f.created_at, f.modified_at, + f.data_backend, + f.data_ref_id, f.name, f.version, f.is_shared, From 1d5bad552311c8bad9afc85573277c22436c0969 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 3 Jul 2025 10:51:42 +0200 Subject: [PATCH 3/7] :lipstick: Report file-id on file changes exception --- common/src/app/common/files/changes.cljc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common/src/app/common/files/changes.cljc b/common/src/app/common/files/changes.cljc index 5dda3adb0f..c5d1812291 100644 --- a/common/src/app/common/files/changes.cljc +++ b/common/src/app/common/files/changes.cljc @@ -487,7 +487,9 @@ (cts/shape? shape-new)) (ex/raise :type :assertion :code :data-validation - :hint "invalid shape found after applying changes" + :hint (str "invalid shape found after applying changes on file " + (:id data-new)) + :file-id (:id data-new) ::sm/explain (cts/explain-shape shape-new))))))] (->> (into #{} (map :page-id) items) From e5b6c4a9e023b433659d5d25ce0896c2d373d108 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 3 Jul 2025 14:51:32 +0200 Subject: [PATCH 4/7] :sparkles: Add minor improvement to error reporter logger --- backend/src/app/loggers/database.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/app/loggers/database.clj b/backend/src/app/loggers/database.clj index 00accbde55..d15d5704f1 100644 --- a/backend/src/app/loggers/database.clj +++ b/backend/src/app/loggers/database.clj @@ -41,7 +41,7 @@ (if (or (instance? java.util.concurrent.CompletionException cause) (instance? java.util.concurrent.ExecutionException cause)) (-> record - (assoc ::trace (ex/format-throwable cause :data? false :explain? false :header? false :summary? false)) + (assoc ::trace (ex/format-throwable cause :data? true :explain? false :header? false :summary? false)) (assoc ::l/cause (ex-cause cause)) (record->report)) @@ -64,7 +64,7 @@ message)) @message) :trace (or (::trace record) - (some-> cause (ex/format-throwable :data? false :explain? false :header? false :summary? false)))} + (some-> cause (ex/format-throwable :data? true :explain? false :header? false :summary? false)))} (when-let [params (or (:request/params context) (:params context))] {:params (pp/pprint-str params :length 20 :level 15)}) From cafb7abb53c23de7d6104ac010205142a265d309 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 3 Jul 2025 14:51:54 +0200 Subject: [PATCH 5/7] :tada: Add better syntax facility for `ex/try!` macro --- common/src/app/common/exceptions.cljc | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/common/src/app/common/exceptions.cljc b/common/src/app/common/exceptions.cljc index 5cceeb7222..4bb36461ea 100644 --- a/common/src/app/common/exceptions.cljc +++ b/common/src/app/common/exceptions.cljc @@ -47,10 +47,26 @@ `(try ~@exprs (catch Throwable e# nil)))) (defmacro try! - [& exprs] - (if (:ns &env) - `(try ~@exprs (catch :default e# e#)) - `(try ~@exprs (catch Throwable e# e#)))) + [expr & {:keys [reraise-with on-exception]}] + (let [ex-sym + (gensym "exc") + + generate-catch + (fn [] + (cond + (map? reraise-with) + `(ex/raise ~@(mapcat identity reraise-with) :cause ~ex-sym) + + on-exception + `(let [handler# ~on-exception] + (handler# ~ex-sym)) + + :else + ex-sym))] + + (if (:ns &env) + `(try ~expr (catch :default ~ex-sym ~(generate-catch))) + `(try ~expr (catch Throwable ~ex-sym ~(generate-catch)))))) (defn ex-info? [v] From 63cd3ae025c5957e394624c1abc9489b273d70bc Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 3 Jul 2025 14:53:02 +0200 Subject: [PATCH 6/7] :sparkles: Add better error handling for bool creation --- common/src/app/common/types/path.cljc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/common/src/app/common/types/path.cljc b/common/src/app/common/types/path.cljc index eb0398787a..bcfa323c82 100644 --- a/common/src/app/common/types/path.cljc +++ b/common/src/app/common/types/path.cljc @@ -8,6 +8,7 @@ (:require [app.common.data :as d] [app.common.data.macros :as dm] + [app.common.exceptions :as ex] [app.common.files.helpers :as cpf] [app.common.geom.matrix :as gmt] [app.common.geom.point :as gpt] @@ -205,8 +206,18 @@ "Calculate the boolean content from shape and objects. Returns a packed PathData instance" [shape objects] - (-> (calc-bool-content* shape objects) - (impl/path-data))) + (ex/try! + (-> (calc-bool-content* shape objects) + (impl/path-data)) + + :on-exception + (fn [cause] + (ex/raise :type :internal + :code :invalid-path-content + :hint (str "unable to create bool content for shape " (:id shape)) + :content (str (:content shape)) + :shape-id (:id shape) + :cause cause)))) (defn update-bool-shape "Calculates the selrect+points for the boolean shape" From 86ee4f55c56dc417872535707a88ac76e6995b5c Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 3 Jul 2025 14:53:40 +0200 Subject: [PATCH 7/7] :books: Update docstring --- common/src/app/common/types/path/bool.cljc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/app/common/types/path/bool.cljc b/common/src/app/common/types/path/bool.cljc index 9be2c5a792..af9be976b2 100644 --- a/common/src/app/common/types/path/bool.cljc +++ b/common/src/app/common/types/path/bool.cljc @@ -412,7 +412,7 @@ (defn calculate-content "Create a bool content from a collection of contents and specified - type." + type. Returns plain segments" [bool-type contents] ;; We apply the boolean operation in to each pair and the result to the next ;; element