import type { TaskRunner } from '@n8n/task-runner'; import { UnexpectedError } from 'n8n-workflow'; export class TaskRunnerDisconnectedError extends UnexpectedError { description: string; constructor( readonly runnerId: TaskRunner['id'], isCloudDeployment: boolean, ) { super('Node execution failed'); const fixSuggestions = { reduceItems: 'Reduce the number of items processed at a time, by batching them using a loop node', increaseMemory: "Increase the memory available to the task runner with 'N8N_RUNNERS_MAX_OLD_SPACE_SIZE' environment variable", upgradePlan: 'Upgrade your cloud plan to increase the available memory', }; const subtitle = 'This can happen for various reasons. Please try executing the node again. If the problem persists, you can try the following:'; const suggestions = isCloudDeployment ? [fixSuggestions.reduceItems, fixSuggestions.upgradePlan] : [fixSuggestions.reduceItems, fixSuggestions.increaseMemory]; const suggestionsText = suggestions .map((suggestion, index) => `${index + 1}. ${suggestion}`) .join('
'); const description = `${subtitle}

${suggestionsText}`; this.description = description; } }