From 886778805d645b091967705850c0c36a2cb29c35 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Fri, 24 Jan 2025 16:01:17 +0100 Subject: [PATCH] Add updateProcessesFromRelay --- src/services/service.ts | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/services/service.ts b/src/services/service.ts index 30a25de..612b7af 100755 --- a/src/services/service.ts +++ b/src/services/service.ts @@ -890,6 +890,24 @@ export default class Services { await this.restoreProcessesFromDB(); } + public async updateProcessesFromRelay(processes: Record) { + const db = await Database.getInstance(); + for (const [processId, process] of Object.entries(processes)) { + const processFromDb = await this.getProcess(processId); + if (!processFromDb) { + console.log(`Unknown process ${processId}, adding to db`); + await db.addObject({ storeName: 'processes', object: process, key: processId}); + } else { + const missingStates = process.states.length - processFromDb.states.length; + if (missingStates < 0) { + // We are missing one or more states for a known process + // TODO send a request to process managers to get the missing states + console.log(`Missing ${missingStates} for process ${processId}`) + } + } + } + } + // Restore process in wasm with persistent storage public async restoreProcessesFromDB() { const db = await Database.getInstance(); @@ -1082,7 +1100,6 @@ export default class Services { try { const handshakeMsg: HandshakeMessage = JSON.parse(parsedMsg); this.updateRelay(url, handshakeMsg.sp_address); - const processes = handshakeMsg.processes_list; const members = handshakeMsg.peers_list; if (this.membersList && Object.keys(this.membersList).length === 0) { this.membersList = handshakeMsg.peers_list; @@ -1092,9 +1109,11 @@ export default class Services { } } - // Write processes to db setTimeout(async () => { - await this.restoreProcessesFromBackUp(processes); + const newProcesses = handshakeMsg.processes_list; + if (newProcesses && Object.keys(newProcesses).length !== 0) { + await this.updateProcessesFromRelay(newProcesses); + } }, 500) } catch (e) { console.error('Failed to parse init message:', e);