Add updateProcessesFromRelay

This commit is contained in:
NicolasCantu 2025-01-24 16:01:17 +01:00
parent 932b659c2b
commit 886778805d

View File

@ -890,6 +890,24 @@ export default class Services {
await this.restoreProcessesFromDB();
}
public async updateProcessesFromRelay(processes: Record<string, Process>) {
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);