feat(core): Add execution runData recovery and status field (#5112)

* adds ExecutionEvents view modal to ExecutionList

* fix time rendering and remove wf column

* checks for unfinished executions and fails them

* prevent re-setting stoppedAt for execution

* some cleanup / manually create rundata after crash

* quicksave

* remove Threads lib, log worker rewrite

* cleanup comment

* fix sentry destination return value

* test for tests...

* run tests with single worker

* fix tests

* remove console log

* add endpoint for execution data recovery

* lint cleanup and some refactoring

* fix accidental recursion

* remove cyclic imports

* add rundata recovery to Workflowrunner

* remove comments

* cleanup and refactor

* adds a status field to executions

* setExecutionStatus on queued worker

* fix onWorkflowPostExecute

* set waiting from worker

* get crashed status into frontend

* remove comment

* merge fix

* cleanup

* catch empty rundata in recovery

* refactor IExecutionsSummary and inject nodeExecution Errors

* reduce default event log size to 10mb from 100mb

* add per node execution status

* lint fix

* merge and lint fix

* phrasing change

* improve preview rendering and messaging

* remove debug

* Improve partial rundata recovery

* fix labels

* fix line through

* send manual rundata to ui at crash

* some type and msg push fixes

* improve recovered item rendering in preview

* update workflowStatistics on recover

* merge fix

* review fixes

* merge fix

* notify eventbus when ui is back up

* add a small timeout to make sure the UI is back up

* increase reconnect timeout to 30s

* adjust recover timeout and ui connection lost msg

* do not stop execution in editor after x reconnects

* add executionRecovered push event

* fix recovered connection not green

* remove reconnect toast and  merge existing rundata

* merge editor and recovered data for own mode
This commit is contained in:
Michael Auerswald
2023-02-17 10:54:07 +01:00
committed by GitHub
parent 3a9c257f55
commit d143f3f2ec
71 changed files with 1245 additions and 307 deletions

View File

@@ -13,6 +13,7 @@ import PCancelable from 'p-cancelable';
import type {
ExecutionError,
ExecutionStatus,
IConnection,
IDataObject,
IExecuteData,
@@ -46,6 +47,8 @@ export class WorkflowExecute {
private mode: WorkflowExecuteMode;
private status: ExecutionStatus;
constructor(
additionalData: IWorkflowExecuteAdditionalData,
mode: WorkflowExecuteMode,
@@ -53,6 +56,7 @@ export class WorkflowExecute {
) {
this.additionalData = additionalData;
this.mode = mode;
this.status = 'new';
this.runExecutionData = runExecutionData || {
startData: {},
resultData: {
@@ -85,6 +89,8 @@ export class WorkflowExecute {
destinationNode?: string,
pinData?: IPinData,
): PCancelable<IRun> {
this.status = 'running';
// Get the nodes to start workflow execution from
startNode = startNode || workflow.getStartNode(destinationNode);
@@ -157,6 +163,8 @@ export class WorkflowExecute {
let incomingNodeConnections: INodeConnections | undefined;
let connection: IConnection;
this.status = 'running';
const runIndex = 0;
// Initialize the nodeExecutionStack and waitingExecution with
@@ -682,6 +690,8 @@ export class WorkflowExecute {
const startedAt = new Date();
this.status = 'running';
const startNode = this.runExecutionData.executionData!.nodeExecutionStack[0].node.name;
let destinationNode: string | undefined;
@@ -758,6 +768,7 @@ export class WorkflowExecute {
main: executionData.data.main,
} as ITaskDataConnections,
source: [],
executionStatus: 'error',
},
],
},
@@ -1048,10 +1059,12 @@ export class WorkflowExecute {
startTime,
executionTime: new Date().getTime() - startTime,
source: !executionData.source ? [] : executionData.source.main,
executionStatus: 'success',
};
if (executionError !== undefined) {
taskData.error = executionError;
taskData.executionStatus = 'error';
if (executionData.node.continueOnFail === true) {
// Workflow should continue running even if node errors
@@ -1317,6 +1330,7 @@ export class WorkflowExecute {
mode: this.mode,
startedAt,
stoppedAt: new Date(),
status: this.status,
};
return fullRunData;