Skip to content

Commit 5173a73

Browse files
committed
fix: db worker doesn't need to wait for plugin initialization
1 parent b17cc5e commit 5173a73

File tree

4 files changed

+70
-71
lines changed

4 files changed

+70
-71
lines changed

src/main/frontend/core.cljs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,7 @@
8888

8989
;; (setup-entity-profile!)
9090
(log/info ::init "App started")
91-
(plugin-handler/setup!
92-
#(handler/start! start)))
91+
(handler/start! start))
9392

9493
(defn ^:export stop []
9594
;; stop is called before any code is reloaded

src/main/frontend/handler.cljs

Lines changed: 62 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
[frontend.handler.global-config :as global-config-handler]
2626
[frontend.handler.notification :as notification]
2727
[frontend.handler.page :as page-handler]
28+
[frontend.handler.plugin :as plugin-handler]
2829
[frontend.handler.plugin-config :as plugin-config-handler]
2930
[frontend.handler.repo :as repo-handler]
3031
[frontend.handler.repo-config :as repo-config-handler]
@@ -137,65 +138,67 @@
137138

138139
(defn start!
139140
[render]
140-
141-
(idb/start)
142-
(get-system-info)
143-
(set-global-error-notification!)
144-
145-
(register-components-fns!)
146-
(user-handler/restore-tokens-from-localstorage)
147-
(user.login/setup-configure!)
148-
(state/set-db-restoring! true)
149-
(when (util/electron?)
150-
(el/listen!))
151-
(render)
152-
(i18n/start)
153-
(instrument/init)
154-
155-
(-> (util/indexeddb-check?)
156-
(p/catch (fn [_e]
157-
(notification/show! "Sorry, it seems that your browser doesn't support IndexedDB, we recommend to use latest Chrome(Chromium) or Firefox(Non-private mode)." :error false)
158-
(state/set-indexedb-support! false))))
159-
160-
(react/run-custom-queries-when-idle!)
161-
162-
(events/run!)
163-
164-
(log/info ::start-web-worker {})
165-
166-
(p/do!
167-
(-> (p/let [_ (db-browser/start-db-worker!)
168-
repos (repo-handler/get-repos)
169-
_ (state/set-repos! repos)
170-
_ (mobile-util/hide-splash) ;; hide splash as early as ui is stable
171-
repo (or (state/get-current-repo) (:url (first repos)))
172-
_ (if (empty? repos)
173-
(repo-handler/new-db! config/demo-repo)
174-
(restore-and-setup! repo))]
175-
(set-network-watcher!)
176-
177-
(when (util/electron?)
178-
(persist-db/run-export-periodically!))
179-
(when (mobile-util/native-platform?)
180-
(state/restore-mobile-theme!)))
181-
(p/catch (fn [e]
182-
(js/console.error "Error while restoring repos: " e)))
183-
(p/finally (fn []
184-
(state/set-db-restoring! false)
185-
(p/resolve! state/app-ready-promise true)
186-
(when-not (util/mobile?)
187-
(p/let [webgpu-available? (db-browser/<check-webgpu-available?)]
188-
(log/info :webgpu-available? webgpu-available?)
189-
(when webgpu-available?
190-
(p/do! (db-browser/start-inference-worker!)
191-
(db-browser/<connect-db-worker-and-infer-worker!)
192-
(reset! vector-search-flows/*infer-worker-ready true))))
193-
nil))))
194-
195-
(util/<app-wake-up-from-sleep-loop (atom false))
196-
197-
(when-not (util/mobile?)
198-
(persist-var/load-vars))))
141+
(let [t1 (util/time-ms)]
142+
(p/do!
143+
(idb/start)
144+
(plugin-handler/setup!)
145+
(render))
146+
147+
(get-system-info)
148+
(set-global-error-notification!)
149+
150+
(register-components-fns!)
151+
(user-handler/restore-tokens-from-localstorage)
152+
(user.login/setup-configure!)
153+
(state/set-db-restoring! true)
154+
(when (util/electron?)
155+
(el/listen!))
156+
157+
(i18n/start)
158+
(instrument/init)
159+
160+
(react/run-custom-queries-when-idle!)
161+
162+
(events/run!)
163+
164+
(log/info ::start-web-worker {})
165+
166+
(p/do!
167+
(-> (p/let [t2 (util/time-ms)
168+
_ (db-browser/start-db-worker!)
169+
_ (log/info ::db-worker-spent-time (- (util/time-ms) t2))
170+
repos (repo-handler/get-repos)
171+
_ (state/set-repos! repos)
172+
_ (mobile-util/hide-splash) ;; hide splash as early as ui is stable
173+
repo (or (state/get-current-repo) (:url (first repos)))
174+
_ (if (empty? repos)
175+
(repo-handler/new-db! config/demo-repo)
176+
(restore-and-setup! repo))]
177+
(set-network-watcher!)
178+
179+
(when (util/electron?)
180+
(persist-db/run-export-periodically!))
181+
(when (mobile-util/native-platform?)
182+
(state/restore-mobile-theme!)))
183+
(p/catch (fn [e]
184+
(js/console.error "Error while restoring repos: " e)))
185+
(p/finally (fn []
186+
(state/set-db-restoring! false)
187+
(p/resolve! state/app-ready-promise true)
188+
(log/info ::app-init-spent-time (- (util/time-ms) t1))
189+
(when-not (util/mobile?)
190+
;; (p/let [webgpu-available? (db-browser/<check-webgpu-available?)]
191+
;; (log/info :webgpu-available? webgpu-available?)
192+
;; (when webgpu-available?
193+
;; (p/do! (db-browser/start-inference-worker!)
194+
;; (db-browser/<connect-db-worker-and-infer-worker!)
195+
;; (reset! vector-search-flows/*infer-worker-ready true))))
196+
nil))))
197+
198+
(util/<app-wake-up-from-sleep-loop (atom false))
199+
200+
(when-not (util/mobile?)
201+
(persist-var/load-vars)))))
199202

200203
(defn stop! []
201204
(prn "stop!"))

src/main/frontend/handler/plugin.cljs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -829,7 +829,7 @@
829829
(str text)]]])))
830830

831831
(defn ^:large-vars/cleanup-todo init-plugins!
832-
[callback]
832+
[]
833833

834834
(let [el (js/document.createElement "div")]
835835
(.appendChild js/document.body el)
@@ -951,7 +951,7 @@
951951
(state/set-state! :plugin/indicator-text true)
952952
;; wait for the plugin register async messages
953953
(js/setTimeout
954-
(fn [] (callback)
954+
(fn []
955955
(some-> (seq plugins-async)
956956
(p/delay 16)
957957
(p/then #(.register js/LSPluginCore (bean/->js plugins-async) true))))
@@ -963,13 +963,10 @@
963963

964964
(defn setup!
965965
"setup plugin core handler"
966-
[callback]
967-
(if (not config/lsp-enabled?)
968-
(callback)
969-
(do
970-
(idb/start)
971-
(setup-global-apis-for-web!)
972-
(init-plugins! callback))))
966+
[]
967+
(when (and config/lsp-enabled? (not (util/mobile?)))
968+
(setup-global-apis-for-web!)
969+
(init-plugins!)))
973970

974971
(comment
975972
{:pending (count (:plugin/updates-pending @state/state))

src/main/frontend/persist_db/browser.cljs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@
142142
(reset! state/*db-worker wrapped-worker)
143143
(-> (p/let [_ (state/<invoke-db-worker :thread-api/init config/RTC-WS-URL)
144144
_ (sync-app-state!)
145-
_ (log/debug "init worker spent" (str (- (util/time-ms) t1) "ms"))
145+
_ (log/info "init worker spent" (str (- (util/time-ms) t1) "ms"))
146146
_ (sync-ui-state!)
147147
_ (ask-persist-permission!)
148148
_ (state/pub-event! [:graph/sync-context])]

0 commit comments

Comments
 (0)