From 43fd606b2f17bf3f940e0fd3c68a5ffce944c0fe Mon Sep 17 00:00:00 2001 From: yflory Date: Wed, 5 Feb 2025 18:19:44 +0100 Subject: [PATCH] Fix race conditions --- src/worker/async-store.js | 9 ++++++--- src/worker/components/account.ts | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/worker/async-store.js b/src/worker/async-store.js index d6dc4e8b4..cf800f5d4 100644 --- a/src/worker/async-store.js +++ b/src/worker/async-store.js @@ -89,7 +89,9 @@ const factory = (ApiConfig = {}, Sortify, UserObject, ProxyManager, var s = getStore(teamId); if (!s) { return void cb({ error: 'ENOTFOUND' }); } nThen(function (waitFor) { - Realtime.whenRealtimeSyncs(s.realtime, waitFor()); + if (s.realtime) { + Realtime.whenRealtimeSyncs(s.realtime, waitFor()); + } if (!s.id && s.drive?.realtime) { Realtime.whenRealtimeSyncs(s.drive.realtime, waitFor()); } @@ -2722,7 +2724,8 @@ const factory = (ApiConfig = {}, Sortify, UserObject, ProxyManager, }); }; - var onCacheReady = function (clientId, cb) { + var onCacheReady = function (clientId, _cb) { + const cb = Util.mkAsync(_cb); var proxy = store.proxy; var drive = store.drive; if (store.manager) { return void cb(); } @@ -3215,7 +3218,7 @@ const factory = (ApiConfig = {}, Sortify, UserObject, ProxyManager, } if (requires === 'drive') { - loadDrive(clientId, data, ret => { + return void loadDrive(clientId, data, ret => { cb(ret); startCacheModules(clientId, ret, onInit); }, ret => { diff --git a/src/worker/components/account.ts b/src/worker/components/account.ts index 10208d7c7..1baa56b59 100644 --- a/src/worker/components/account.ts +++ b/src/worker/components/account.ts @@ -65,6 +65,7 @@ const init = (config) => { returned.anonHash = Hash.getEditHashFromKeys(secret); } }).on('cacheready', function (info) { + store.realtime = info.realtime; // XXX move to account store.offline = true; // XXX move to account store.networkPromise = info.networkPromise; store.cacheReturned = returned; // XXX move to account