mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 02:21:13 +00:00
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:
committed by
GitHub
parent
3a9c257f55
commit
d143f3f2ec
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user