Fix race condition on getMyProcesses
This commit is contained in:
parent
7c39795cef
commit
926f41d270
@ -1351,21 +1351,23 @@ export default class Services {
|
|||||||
try {
|
try {
|
||||||
const processes = await this.getProcesses();
|
const processes = await this.getProcesses();
|
||||||
|
|
||||||
|
const newMyProcesses = new Set<string>(this.myProcesses || []);
|
||||||
for (const [processId, process] of Object.entries(processes)) {
|
for (const [processId, process] of Object.entries(processes)) {
|
||||||
// We use myProcesses attribute to not reevaluate all processes everytime
|
// We use myProcesses attribute to not reevaluate all processes everytime
|
||||||
if (this.myProcesses && this.myProcesses.has(processId)) {
|
if (newMyProcesses.has(processId)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const roles = this.getRoles(process);
|
const roles = this.getRoles(process);
|
||||||
|
|
||||||
if (roles && this.rolesContainsUs(roles)) {
|
if (roles && this.rolesContainsUs(roles)) {
|
||||||
this.myProcesses.add(processId);
|
newMyProcesses.add(processId);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this.myProcesses = newMyProcesses; // atomic update
|
||||||
return Array.from(this.myProcesses);
|
return Array.from(this.myProcesses);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error("Failed to get processes:", e);
|
console.error("Failed to get processes:", e);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user