ConnectionError isn't throw from start, but sets sync.error

This commit is contained in:
Bruno Windels 2021-04-09 16:28:14 +02:00
parent 4b19e3c498
commit b852feeb9c

View file

@ -234,19 +234,18 @@ export class SessionContainer {
} }
async _waitForFirstSync() { async _waitForFirstSync() {
try { this._sync.start();
this._sync.start(); this._status.set(LoadStatus.FirstSync);
this._status.set(LoadStatus.FirstSync);
} catch (err) {
// swallow ConnectionError here and continue,
// as the reconnector above will call
// sync.start again to retry in this case
if (!(err instanceof ConnectionError)) {
throw err;
}
}
// only transition into Ready once the first sync has succeeded // only transition into Ready once the first sync has succeeded
this._waitForFirstSyncHandle = this._sync.status.waitFor(s => s === SyncStatus.Syncing || s === SyncStatus.Stopped); this._waitForFirstSyncHandle = this._sync.status.waitFor(s => {
if (s === SyncStatus.Stopped) {
// keep waiting if there is a ConnectionError
// as the reconnector above will call
// sync.start again to retry in this case
return this._sync.error.name !== "ConnectionError";
}
return s === SyncStatus.Syncing;
});
try { try {
await this._waitForFirstSyncHandle.promise; await this._waitForFirstSyncHandle.promise;
if (this._sync.status.get() === SyncStatus.Stopped) { if (this._sync.status.get() === SyncStatus.Stopped) {