Skip to content

Commit aacc3f5

Browse files
fix: worker process termination and logging
This commit refactors the code in compileTypesAsync.ts to improve the termination of the worker process and enhance the logging. The worker process termination now includes sending an 'exit' message to the worker and setting the worker variable to null. Additionally, the logging messages now include the specific run number of the worker process. This change improves the overall reliability and clarity of the code.
1 parent d756825 commit aacc3f5

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)