fix(core): Do not execute workflowExecuteBefore hook when resuming executions from a waiting state (#5727)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™ 2023-04-06 10:18:19 +02:00 committed by GitHub
parent b1e1c5b306
commit 6689451e8c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 9 additions and 1 deletions

View file

@ -728,6 +728,7 @@ export interface IProcessMessageDataHook {
export interface IWorkflowExecutionDataProcess { export interface IWorkflowExecutionDataProcess {
destinationNode?: string; destinationNode?: string;
restartExecutionId?: string;
executionMode: WorkflowExecuteMode; executionMode: WorkflowExecuteMode;
executionData?: IRunExecutionData; executionData?: IRunExecutionData;
runData?: IRunData; runData?: IRunData;

View file

@ -271,6 +271,7 @@ export class WorkflowRunner {
undefined, undefined,
workflowTimeout <= 0 ? undefined : Date.now() + workflowTimeout * 1000, workflowTimeout <= 0 ? undefined : Date.now() + workflowTimeout * 1000,
); );
additionalData.restartExecutionId = restartExecutionId;
// Register the active execution // Register the active execution
const executionId = await this.activeExecutions.add(data, undefined, restartExecutionId); const executionId = await this.activeExecutions.add(data, undefined, restartExecutionId);
@ -644,6 +645,8 @@ export class WorkflowRunner {
data.workflowData.staticData = await WorkflowHelpers.getStaticDataById(workflowId); data.workflowData.staticData = await WorkflowHelpers.getStaticDataById(workflowId);
} }
data.restartExecutionId = restartExecutionId;
// Register the active execution // Register the active execution
const executionId = await this.activeExecutions.add(data, subprocess, restartExecutionId); const executionId = await this.activeExecutions.add(data, subprocess, restartExecutionId);

View file

@ -170,6 +170,7 @@ class WorkflowRunnerProcess {
undefined, undefined,
workflowTimeout <= 0 ? undefined : Date.now() + workflowTimeout * 1000, workflowTimeout <= 0 ? undefined : Date.now() + workflowTimeout * 1000,
); );
additionalData.restartExecutionId = this.data.restartExecutionId;
additionalData.hooks = this.getProcessForwardHooks(); additionalData.hooks = this.getProcessForwardHooks();
additionalData.hooks.hookFunctions.sendResponse = [ additionalData.hooks.hookFunctions.sendResponse = [

View file

@ -746,7 +746,9 @@ export class WorkflowExecute {
const returnPromise = (async () => { const returnPromise = (async () => {
try { try {
await this.executeHook('workflowExecuteBefore', [workflow]); if (!this.additionalData.restartExecutionId) {
await this.executeHook('workflowExecuteBefore', [workflow]);
}
} catch (error) { } catch (error) {
// Set the error that it can be saved correctly // Set the error that it can be saved correctly
executionError = { executionError = {

View file

@ -1677,6 +1677,7 @@ export interface IWorkflowExecuteAdditionalData {
) => Promise<any>; ) => Promise<any>;
// hooks?: IWorkflowExecuteHooks; // hooks?: IWorkflowExecuteHooks;
executionId?: string; executionId?: string;
restartExecutionId?: string;
hooks?: WorkflowHooks; hooks?: WorkflowHooks;
httpResponse?: express.Response; httpResponse?: express.Response;
httpRequest?: express.Request; httpRequest?: express.Request;