Chore: dispatch write to workers

This commit is contained in:
SukkaW
2026-08-02 00:09:56 +08:00
parent 6d8070d5f3
commit fa9c02d27d
9 changed files with 528 additions and 199 deletions

View File

@@ -0,0 +1,30 @@
import type { JestWorkerFarm } from 'jest-worker';
import { createWorker } from '../worker';
type OutputWorkerModule = typeof import('./output.worker');
type OutputWorkerFarm = JestWorkerFarm<Pick<OutputWorkerModule, 'writeOutput'>>;
let farm: OutputWorkerFarm | null = null;
/**
* Lazily boot the output worker farm. Only FileOutput#write dispatches here, and
* only when an output crosses the offload threshold -- today that is exclusively
* the reject domainsets / adguardhome outputs of build-reject-domainset.
*
* IMPORTANT: whoever triggers the lazy boot is responsible for a matching
* endOutputWorkerFarm() (idempotent, safe to call unconditionally), otherwise the
* worker threads keep a standalone task run alive.
*/
export function getOutputWorkerFarm(): OutputWorkerFarm {
// 3 workers: reject, reject_extra and reject_phishing format & write in parallel
farm ??= createWorker<OutputWorkerModule>(require.resolve('./output.worker'), 3)(['writeOutput']);
return farm;
}
export async function endOutputWorkerFarm(): Promise<void> {
if (farm) {
const f = farm;
farm = null;
await f.end();
}
}