Fix race condition on getMyProcesses

This commit is contained in:
Sosthene 2025-07-01 16:09:15 +02:00
parent 7c39795cef
commit 926f41d270

View File

@ -1351,21 +1351,23 @@ export default class Services {
try {
const processes = await this.getProcesses();
const newMyProcesses = new Set<string>(this.myProcesses || []);
for (const [processId, process] of Object.entries(processes)) {
// We use myProcesses attribute to not reevaluate all processes everytime
if (this.myProcesses && this.myProcesses.has(processId)) {
if (newMyProcesses.has(processId)) {
continue;
}
try {
const roles = this.getRoles(process);
if (roles && this.rolesContainsUs(roles)) {
this.myProcesses.add(processId);
newMyProcesses.add(processId);
}
} catch (e) {
console.error(e);
}
}
this.myProcesses = newMyProcesses; // atomic update
return Array.from(this.myProcesses);
} catch (e) {
console.error("Failed to get processes:", e);