n8n
Version:
n8n Workflow Automation Tool
44 lines (43 loc) • 2.03 kB
TypeScript
import { Logger, TypedEmitter } from '@n8n/backend-common';
import { LogScope, TaskRunnersConfig } from '@n8n/config';
import { spawn } from 'node:child_process';
import { TaskBrokerAuthService } from './task-broker/auth/task-broker-auth.service';
import { TaskRunnerLifecycleEvents } from './task-runner-lifecycle-events';
export type ChildProcess = ReturnType<typeof spawn>;
export declare function restartRetryDelay(attempt: number): number;
export type ExitReason = 'unknown' | 'oom';
export type TaskRunnerProcessEventMap = {
exit: {
reason: ExitReason;
};
};
export declare abstract class TaskRunnerProcessBase extends TypedEmitter<TaskRunnerProcessEventMap> {
protected readonly logger: Logger;
protected readonly runnerConfig: TaskRunnersConfig;
protected readonly authService: TaskBrokerAuthService;
protected readonly runnerLifecycleEvents: TaskRunnerLifecycleEvents;
protected readonly name: string;
protected readonly taskType: string;
protected process: ChildProcess | null;
protected _runPromise: Promise<void> | null;
private startPromise;
protected isShuttingDown: boolean;
constructor(loggerScope: LogScope, logger: Logger, runnerConfig: TaskRunnersConfig, authService: TaskBrokerAuthService, runnerLifecycleEvents: TaskRunnerLifecycleEvents);
private restartIfOwnRunner;
get isRunning(): boolean;
get pid(): number | undefined;
get runPromise(): Promise<void> | null;
get isInternal(): boolean;
start(): Promise<void>;
private spawnAndMonitor;
stop(): Promise<void>;
protected forceRestart(): Promise<void>;
protected onProcessExit(code: number | null, resolveFn: () => void): void;
private startWithRetries;
protected monitorProcess(taskRunnerProcess: ChildProcess): void;
abstract startProcess(grantToken: string, taskBrokerUri: string): ChildProcess;
setupProcessMonitoring?(process: ChildProcess): void;
analyzeExitReason?(code: number | null): {
reason: ExitReason;
};
}