0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2025-03-11 02:23:09 -05:00

refactor(server): worker cleanup (#13805)

This commit is contained in:
Jason Rasmussen 2024-10-29 11:47:33 -04:00 committed by GitHub
parent 143ee0bc34
commit 4b9e460db5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -12,29 +12,39 @@ if (immichApp) {
let apiProcess: ChildProcess | undefined; let apiProcess: ChildProcess | undefined;
const onError = (name: string, error: Error) => {
console.error(`${name} worker error: ${error}`);
};
const onExit = (name: string, exitCode: number | null) => {
if (exitCode !== 0) {
console.error(`${name} worker exited with code ${exitCode}`);
if (apiProcess && name !== ImmichWorker.API) {
console.error('Killing api process');
apiProcess.kill('SIGTERM');
apiProcess = undefined;
}
}
process.exit(exitCode);
};
function bootstrapWorker(name: ImmichWorker) { function bootstrapWorker(name: ImmichWorker) {
console.log(`Starting ${name} worker`); console.log(`Starting ${name} worker`);
const execArgv = process.execArgv.map((arg) => (arg.startsWith('--inspect') ? '--inspect=0.0.0.0:9231' : arg)); let worker: Worker | ChildProcess;
const worker = if (name === ImmichWorker.API) {
name === ImmichWorker.API worker = fork(`./dist/workers/${name}.js`, [], {
? (apiProcess = fork(`./dist/workers/${name}.js`, [], { execArgv })) execArgv: process.execArgv.map((arg) => (arg.startsWith('--inspect') ? '--inspect=0.0.0.0:9231' : arg)),
: new Worker(`./dist/workers/${name}.js`); });
apiProcess = worker;
} else {
worker = new Worker(`./dist/workers/${name}.js`);
}
worker.on('error', (error) => { worker.on('error', (error) => onError(name, error));
console.error(`${name} worker error: ${error}`); worker.on('exit', (exitCode) => onExit(name, exitCode));
});
worker.on('exit', (exitCode) => {
if (exitCode !== 0) {
console.error(`${name} worker exited with code ${exitCode}`);
if (apiProcess && name !== ImmichWorker.API) {
console.error('Killing api process');
apiProcess.kill('SIGTERM');
}
process.exit(exitCode);
}
});
} }
function bootstrap() { function bootstrap() {