瀏覽代碼

enhance(rtc): err handling improvements (2)

rcmerci 2 月之前
父節點
當前提交
d1b28bc910

+ 2 - 1
src/main/frontend/common/missionary.cljs

@@ -116,7 +116,8 @@
 
 (defn- fail-case-default-handler
   [key' e]
-  (when-not (instance? Cancelled e)
+  (when-not (or (instance? Cancelled e)
+                (= "missionary.Cancelled" (ex-message e)))
     (log/error :run-task-failed e :key key')))
 
 (defn run-task

+ 1 - 1
src/main/frontend/handler/db_based/rtc.cljs

@@ -109,7 +109,7 @@
     (p/do!
      (js/Promise. user-handler/task--ensure-id&access-token)
      (p/let [start-ex (state/<invoke-db-worker :thread-api/rtc-start stop-before-start?)
-             ex-data* (:ex-data start-ex)
+             ex-data* (ex-data start-ex)
              _ (case (:type ex-data*)
                  (:rtc.exception/not-rtc-graph
                   :rtc.exception/not-found-db-conn)

+ 5 - 7
src/main/frontend/worker/rtc/asset.cljs

@@ -9,13 +9,13 @@
             [datascript.core :as d]
             [frontend.common.missionary :as c.m]
             [frontend.worker.rtc.client-op :as client-op]
+            [frontend.worker.rtc.exception :as r.ex]
             [frontend.worker.rtc.log-and-state :as rtc-log-and-state]
             [frontend.worker.rtc.ws-util :as ws-util]
             [frontend.worker.state :as worker-state]
             [logseq.common.path :as path]
             [malli.core :as ma]
-            [missionary.core :as m])
-  (:import [missionary Cancelled]))
+            [missionary.core :as m]))
 
 (defn- create-local-updates-check-flow
   "Return a flow that emits value if need to push local-updates"
@@ -297,12 +297,10 @@
            m/ap
            (m/reduce {} nil)
            m/?)
-          (catch Cancelled e
-            (add-log-fn :rtc.asset.log/cancelled {})
-            (throw e))
           (catch :default e
-            (add-log-fn :rtc.asset.log/cancelled {:ex-message (ex-message e) :ex-data (ex-data e)})
-            (throw e)))))}))
+            (let [ex (r.ex/e->ex-info e)]
+              (add-log-fn :rtc.asset.log/cancelled {:e ex})
+              (throw ex))))))}))
 
 (comment
   (def x (atom 1))

+ 6 - 7
src/main/frontend/worker/rtc/core.cljs

@@ -263,12 +263,10 @@
            (m/ap)
            (m/reduce {} nil)
            (m/?))
-          (catch Cancelled e
-            (add-log-fn :rtc.log/cancelled {})
-            (throw (r.ex/e->ex-info e)))
           (catch :default e
-            (add-log-fn :rtc.log/cancelled {:ex-message (ex-message e) :ex-data (ex-data e)})
-            (throw (r.ex/e->ex-info e)))
+            (let [ex (r.ex/e->ex-info e)]
+              (add-log-fn :rtc.log/cancelled {:e ex})
+              (throw ex)))
           (finally
             (started-dfv :final) ;; ensure started-dfv can recv a value(values except the first one will be disregarded)
             (when @*assets-sync-loop-canceler (@*assets-sync-loop-canceler))))))}))
@@ -351,7 +349,8 @@
                          :fail (fn [e]
                                  (reset! *last-stop-exception e)
                                  (log/info :rtc-loop-task e)
-                                 (when-not (instance? Cancelled e)
+                                 (when-not (or (instance? Cancelled e)
+                                               (= "missionary.Cancelled" (ex-message e)))
                                    (log/info :rtc-loop-task-e-stack (.-stack e)))
                                  (when (= :rtc.exception/ws-timeout (some-> e ex-data :type))
                                    ;; if fail reason is websocket-timeout, try to restart rtc
@@ -398,7 +397,7 @@
               (log/error :rtc-start-failed ex)
 
               (log/error :BUG-unknown-error ex))
-            (r.ex/->map ex)))))))
+            ex))))))
 
 (defn rtc-stop
   []