2024-10-29 12:08:50 -07:00
|
|
|
import { ensureError } from 'n8n-workflow';
|
|
|
|
import Container from 'typedi';
|
2024-10-02 06:38:42 -07:00
|
|
|
|
2024-10-29 12:08:50 -07:00
|
|
|
import { MainConfig } from './config/main-config';
|
2024-10-08 02:24:10 -07:00
|
|
|
import { JsTaskRunner } from './js-task-runner/js-task-runner';
|
2024-10-02 01:31:56 -07:00
|
|
|
|
2024-10-07 02:23:14 -07:00
|
|
|
let runner: JsTaskRunner | undefined;
|
|
|
|
let isShuttingDown = false;
|
|
|
|
|
|
|
|
function createSignalHandler(signal: string) {
|
|
|
|
return async function onSignal() {
|
|
|
|
if (isShuttingDown) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
console.log(`Received ${signal} signal, shutting down...`);
|
|
|
|
|
|
|
|
isShuttingDown = true;
|
|
|
|
try {
|
|
|
|
if (runner) {
|
|
|
|
await runner.stop();
|
|
|
|
runner = undefined;
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
const error = ensureError(e);
|
|
|
|
console.error('Error stopping task runner', { error });
|
|
|
|
} finally {
|
|
|
|
process.exit(0);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2024-10-02 01:31:56 -07:00
|
|
|
void (async function start() {
|
2024-10-29 12:08:50 -07:00
|
|
|
const config = Container.get(MainConfig);
|
2024-10-02 01:31:56 -07:00
|
|
|
|
2024-10-29 12:08:50 -07:00
|
|
|
runner = new JsTaskRunner(config);
|
2024-10-07 02:23:14 -07:00
|
|
|
|
|
|
|
process.on('SIGINT', createSignalHandler('SIGINT'));
|
|
|
|
process.on('SIGTERM', createSignalHandler('SIGTERM'));
|
2024-10-02 06:38:42 -07:00
|
|
|
})().catch((e) => {
|
|
|
|
const error = ensureError(e);
|
|
|
|
console.error('Task runner failed to start', { error });
|
|
|
|
process.exit(1);
|
|
|
|
});
|