feat(core): Run Error Workflow also on trigger activation error (#3470)
* feat(core): Run Error Workflow also when workflow gets deactivated
or could not be activated on startup because of error
R#
* ⚡ Add missing file
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
import { ActiveWorkflows, NodeExecuteFunctions } from 'n8n-core';
|
||||
|
||||
import {
|
||||
ExecutionError,
|
||||
IDeferredPromise,
|
||||
IExecuteData,
|
||||
IExecuteResponsePromiseData,
|
||||
@@ -22,11 +23,13 @@ import {
|
||||
INodeExecutionData,
|
||||
IRun,
|
||||
IRunExecutionData,
|
||||
IWorkflowBase,
|
||||
IWorkflowExecuteAdditionalData as IWorkflowExecuteAdditionalDataWorkflow,
|
||||
NodeHelpers,
|
||||
WebhookHttpMethod,
|
||||
Workflow,
|
||||
WorkflowActivateMode,
|
||||
WorkflowActivationError,
|
||||
WorkflowExecuteMode,
|
||||
LoggerProxy as Logger,
|
||||
} from 'n8n-workflow';
|
||||
@@ -118,6 +121,7 @@ export class ActiveWorkflowRunner {
|
||||
workflowName: workflowData.name,
|
||||
workflowId: workflowData.id,
|
||||
});
|
||||
this.executeErrorWorkflow(error, workflowData, 'internal');
|
||||
}
|
||||
}
|
||||
Logger.verbose('Finished initializing active workflows (startup)');
|
||||
@@ -715,11 +719,39 @@ export class ActiveWorkflowRunner {
|
||||
message: error.message,
|
||||
},
|
||||
};
|
||||
const activationError = new WorkflowActivationError(
|
||||
'There was a problem with the trigger, for that reason did the workflow had to be deactivated',
|
||||
error,
|
||||
node,
|
||||
);
|
||||
|
||||
this.executeErrorWorkflow(activationError, workflowData, mode);
|
||||
};
|
||||
return returnFunctions;
|
||||
};
|
||||
}
|
||||
|
||||
executeErrorWorkflow(
|
||||
error: ExecutionError,
|
||||
workflowData: IWorkflowBase,
|
||||
mode: WorkflowExecuteMode,
|
||||
): void {
|
||||
const fullRunData: IRun = {
|
||||
data: {
|
||||
resultData: {
|
||||
error,
|
||||
runData: {},
|
||||
},
|
||||
},
|
||||
finished: false,
|
||||
mode,
|
||||
startedAt: new Date(),
|
||||
stoppedAt: new Date(),
|
||||
};
|
||||
|
||||
WorkflowExecuteAdditionalData.executeErrorWorkflow(workflowData, fullRunData, mode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes a workflow active
|
||||
*
|
||||
|
||||
@@ -27,7 +27,6 @@ import {
|
||||
IRun,
|
||||
IRunExecutionData,
|
||||
ITaskData,
|
||||
IWorkflowCredentials,
|
||||
IWorkflowExecuteAdditionalData,
|
||||
IWorkflowExecuteHooks,
|
||||
IWorkflowHooksOptionalParameters,
|
||||
@@ -57,7 +56,6 @@ import {
|
||||
Push,
|
||||
ResponseHelper,
|
||||
WebhookHelpers,
|
||||
WorkflowCredentials,
|
||||
WorkflowHelpers,
|
||||
} from '.';
|
||||
import {
|
||||
@@ -66,7 +64,6 @@ import {
|
||||
getWorkflowOwner,
|
||||
} from './UserManagement/UserManagementHelper';
|
||||
import { whereClause } from './WorkflowHelpers';
|
||||
import { RESPONSE_ERROR_MESSAGES } from './constants';
|
||||
|
||||
const ERROR_TRIGGER_TYPE = config.getEnv('nodes.errorTriggerType');
|
||||
|
||||
@@ -79,7 +76,7 @@ const ERROR_TRIGGER_TYPE = config.getEnv('nodes.errorTriggerType');
|
||||
* @param {WorkflowExecuteMode} mode The mode in which the workflow got started in
|
||||
* @param {string} [executionId] The id the execution got saved as
|
||||
*/
|
||||
function executeErrorWorkflow(
|
||||
export function executeErrorWorkflow(
|
||||
workflowData: IWorkflowBase,
|
||||
fullRunData: IRun,
|
||||
mode: WorkflowExecuteMode,
|
||||
@@ -1028,7 +1025,7 @@ export function sendMessageToUI(source: string, messages: any[]) {
|
||||
* Returns the base additional data without webhooks
|
||||
*
|
||||
* @export
|
||||
* @param {IWorkflowCredentials} credentials
|
||||
* @param {userId} string
|
||||
* @param {INodeParameters} currentNodeParameters
|
||||
* @returns {Promise<IWorkflowExecuteAdditionalData>}
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user