forked from FoundKeyGang/FoundKey
fix: update meta cache between workers
This commit is contained in:
parent
e6c7f4b693
commit
386d1bbf74
2 changed files with 21 additions and 0 deletions
|
@ -168,6 +168,15 @@ function spawnWorker(mode: 'web' | 'queue'): Promise<void> {
|
|||
case 'ready':
|
||||
res();
|
||||
break;
|
||||
case 'metaUpdate':
|
||||
// forward new instance metadata to all workers
|
||||
for (const otherWorker of Object.values(cluster.workers)) {
|
||||
// don't forward the message to the worker that sent it
|
||||
if (worker.id === otherWorker.id) continue;
|
||||
|
||||
otherWorker.send(message);
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import process from 'node:process';
|
||||
import push from 'web-push';
|
||||
import { db } from '@/db/postgre.js';
|
||||
import { Meta } from '@/models/entities/meta.js';
|
||||
|
@ -17,9 +18,20 @@ export async function setMeta(meta: Meta): Promise<void> {
|
|||
|
||||
cache = meta;
|
||||
|
||||
/*
|
||||
The meta is not included here because another process may have updated
|
||||
the content before the other process receives it.
|
||||
*/
|
||||
process.send!('metaUpdated');
|
||||
|
||||
unlock();
|
||||
}
|
||||
|
||||
// the primary will forward this message
|
||||
process.on('message', async message => {
|
||||
if (message === 'metaUpdated') await getMeta();
|
||||
});
|
||||
|
||||
/**
|
||||
* Performs the primitive database operation to fetch server configuration.
|
||||
* If there is no entry yet, inserts a new one.
|
||||
|
|
Loading…
Reference in a new issue