Skip to content

Commit 6c7927d

Browse files
Merge pull request #48 from cloudbeds/fix/worker-process-termination
fix: worker process termination and logging
2 parents 7b25408 + aacc3f5 commit 6c7927d

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

src/compileTypes/compileTypesAsync.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ export function compileTypesAsync(
1616
): Promise<void> {
1717
const logger = getLogger();
1818
workerIndex++;
19+
const innerWorkerIndex = workerIndex;
1920

2021
return new Promise((resolve, reject) => {
2122
if (worker) {
22-
logger.log(`Terminating existing worker process #${workerIndex}`);
23+
logger.log(`Terminating existing worker process #${innerWorkerIndex}`);
2324
worker.postMessage({ type: 'exit' });
2425
}
2526

@@ -29,43 +30,43 @@ export function compileTypesAsync(
2930
worker.on('message', (result: CompileTypesWorkerResultMessage) => {
3031
switch (result.status) {
3132
case 'log':
32-
logger[result.level](`[Worker #${workerIndex}]:`, result.message);
33+
logger[result.level](`[Worker] run #${innerWorkerIndex}:`, result.message);
3334
return;
3435
case 'success':
3536
resolve();
3637
break;
3738
case 'failure':
3839
logger.warn(
39-
`[Worker #${workerIndex}]: Failed to compile types for exposed modules.`,
40+
`[Worker] run #${innerWorkerIndex}: Failed to compile types for exposed modules.`,
4041
loggerHint,
4142
);
4243
reject(new Error('Failed to compile types for exposed modules.'));
4344
break;
4445
case 'error':
4546
logger.warn(
46-
`[Worker #${workerIndex}]: Error compiling types for exposed modules.`,
47+
`[Worker] run #${innerWorkerIndex}: Error compiling types for exposed modules.`,
4748
loggerHint,
4849
);
4950
reject(result.error);
5051
break;
5152
}
52-
worker?.terminate();
53+
worker?.postMessage({ type: 'exit' });
5354
worker = null;
5455
});
5556

5657
worker.on('error', error => {
57-
logger.warn(`[Worker #${workerIndex}]: Unexpected error.`, loggerHint);
58+
logger.warn(`[Worker] run #${innerWorkerIndex}: Unexpected error.`, loggerHint);
5859
logger.log(error);
5960
reject(error);
60-
worker?.terminate();
61+
worker?.postMessage({ type: 'exit' });
6162
worker = null;
6263
});
6364

6465
worker.on('exit', code => {
6566
if (code === null || code === 0) {
6667
resolve();
6768
} else {
68-
reject(new Error(`[Worker #${workerIndex}]: Process exited with code ${code}`));
69+
reject(new Error(`[Worker] run #${innerWorkerIndex}: Process exited with code ${code}`));
6970
}
7071
worker = null;
7172
});

0 commit comments

Comments
 (0)