Skip to content

Commit 9bc8af0

Browse files
authored
fix(orchestrator): remove failed nodes from previous executions (#571)
FLPATH-2136 https://issues.redhat.com/browse/FLPATH-2136 Signed-off-by: Yaron Dayagi <ydayagi@redhat.com>
1 parent a87ef79 commit 9bc8af0

5 files changed

Lines changed: 97 additions & 66 deletions

File tree

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@red-hat-developer-hub/backstage-plugin-orchestrator-backend': patch
3+
'@red-hat-developer-hub/backstage-plugin-orchestrator-common': patch
4+
---
5+
6+
remove failed nodes from previous executions/retriggers

workspaces/orchestrator/plugins/orchestrator-backend/src/service/DataIndexService.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2024 The Backstage Authors
2+
* Copyright Red Hat, Inc.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -13,6 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16+
1617
import { LoggerService } from '@backstage/backend-plugin-api';
1718

1819
import { Client, OperationResult } from '@urql/core';
@@ -803,5 +804,7 @@ function createNodeObject(suffix: string): NodeInstance {
803804
type: 'NodeType',
804805
definitionId: `definitionId${suffix}`,
805806
nodeId: `nodeId${suffix}`,
807+
errorMessage: '',
808+
retrigger: false,
806809
};
807810
}

workspaces/orchestrator/plugins/orchestrator-backend/src/service/DataIndexService.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,7 @@ export class DataIndexService {
433433
name
434434
enter
435435
exit
436+
errorMessage
436437
}
437438
variables
438439
parentProcessInstance {
@@ -442,6 +443,7 @@ export class DataIndexService {
442443
}
443444
error {
444445
nodeDefinitionId
446+
nodeInstanceId
445447
message
446448
}
447449
}
@@ -467,12 +469,12 @@ export class DataIndexService {
467469
return undefined;
468470
}
469471

470-
const instance = processInstances[0];
472+
const instance = this.removeNodes(processInstances[0]);
471473

472474
const workflowInfo = await this.fetchWorkflowInfo(instance.processId);
473475
if (!workflowInfo?.source) {
474476
throw new Error(
475-
`Workflow defintion is required to fetch instance ${instance.id}`,
477+
`Workflow definition is required to fetch instance ${instance.id}`,
476478
);
477479
}
478480
const workflowDefinitionSrc: WorkflowDefinition = fromWorkflowSource(
@@ -499,4 +501,12 @@ export class DataIndexService {
499501
throw result.error;
500502
}
501503
}
504+
505+
private removeNodes(instance: ProcessInstance): ProcessInstance {
506+
const errorNodeId = instance.error?.nodeInstanceId;
507+
instance.nodes = instance.nodes.filter(node => {
508+
return !node.errorMessage || node.id === errorNodeId;
509+
});
510+
return instance;
511+
}
502512
}

workspaces/orchestrator/plugins/orchestrator-common/report.api.md

Lines changed: 72 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,8 @@ export interface NodeInstance {
718718
// (undocumented)
719719
enter: string;
720720
// (undocumented)
721+
errorMessage: string;
722+
// (undocumented)
721723
exit?: string;
722724
// (undocumented)
723725
id: string;
@@ -726,6 +728,8 @@ export interface NodeInstance {
726728
// (undocumented)
727729
nodeId: string;
728730
// (undocumented)
731+
retrigger: boolean;
732+
// (undocumented)
729733
type: string;
730734
}
731735

@@ -1018,6 +1022,8 @@ export interface ProcessInstanceError {
10181022
message?: string;
10191023
// (undocumented)
10201024
nodeDefinitionId: string;
1025+
// (undocumented)
1026+
nodeInstanceId: string;
10211027
}
10221028

10231029
// Warning: (tsdoc-undefined-tag) The TSDoc tag "@export" is not defined in this configuration
@@ -2025,69 +2031,72 @@ export interface WorkflowRunStatusDTO {
20252031
// src/models.d.ts:22:5 - (ae-undocumented) Missing documentation for "exit".
20262032
// src/models.d.ts:23:5 - (ae-undocumented) Missing documentation for "definitionId".
20272033
// src/models.d.ts:24:5 - (ae-undocumented) Missing documentation for "nodeId".
2028-
// src/models.d.ts:26:1 - (ae-undocumented) Missing documentation for "TriggerableNode".
2029-
// src/models.d.ts:27:5 - (ae-undocumented) Missing documentation for "id".
2030-
// src/models.d.ts:28:5 - (ae-undocumented) Missing documentation for "name".
2031-
// src/models.d.ts:29:5 - (ae-undocumented) Missing documentation for "type".
2032-
// src/models.d.ts:30:5 - (ae-undocumented) Missing documentation for "uniqueId".
2033-
// src/models.d.ts:31:5 - (ae-undocumented) Missing documentation for "nodeDefinitionId".
2034-
// src/models.d.ts:33:1 - (ae-undocumented) Missing documentation for "Milestone".
2035-
// src/models.d.ts:34:5 - (ae-undocumented) Missing documentation for "__typename".
2036-
// src/models.d.ts:35:5 - (ae-undocumented) Missing documentation for "id".
2037-
// src/models.d.ts:36:5 - (ae-undocumented) Missing documentation for "name".
2038-
// src/models.d.ts:37:5 - (ae-undocumented) Missing documentation for "status".
2039-
// src/models.d.ts:39:1 - (ae-undocumented) Missing documentation for "ProcessInstanceError".
2040-
// src/models.d.ts:40:5 - (ae-undocumented) Missing documentation for "__typename".
2041-
// src/models.d.ts:41:5 - (ae-undocumented) Missing documentation for "nodeDefinitionId".
2042-
// src/models.d.ts:42:5 - (ae-undocumented) Missing documentation for "message".
2043-
// src/models.d.ts:44:1 - (ae-undocumented) Missing documentation for "ProcessInstanceVariables".
2044-
// src/models.d.ts:45:1 - (ae-undocumented) Missing documentation for "ProcessInstance".
2045-
// src/models.d.ts:46:5 - (ae-undocumented) Missing documentation for "id".
2046-
// src/models.d.ts:47:5 - (ae-undocumented) Missing documentation for "processId".
2047-
// src/models.d.ts:48:5 - (ae-undocumented) Missing documentation for "processName".
2048-
// src/models.d.ts:49:5 - (ae-undocumented) Missing documentation for "parentProcessInstanceId".
2049-
// src/models.d.ts:50:5 - (ae-undocumented) Missing documentation for "rootProcessInstanceId".
2050-
// src/models.d.ts:51:5 - (ae-undocumented) Missing documentation for "rootProcessId".
2051-
// src/models.d.ts:52:5 - (ae-undocumented) Missing documentation for "roles".
2052-
// src/models.d.ts:53:5 - (ae-undocumented) Missing documentation for "state".
2053-
// src/models.d.ts:54:5 - (ae-undocumented) Missing documentation for "endpoint".
2054-
// src/models.d.ts:55:5 - (ae-undocumented) Missing documentation for "serviceUrl".
2055-
// src/models.d.ts:56:5 - (ae-undocumented) Missing documentation for "nodes".
2056-
// src/models.d.ts:57:5 - (ae-undocumented) Missing documentation for "milestones".
2057-
// src/models.d.ts:58:5 - (ae-undocumented) Missing documentation for "variables".
2058-
// src/models.d.ts:63:5 - (ae-undocumented) Missing documentation for "parentProcessInstance".
2059-
// src/models.d.ts:64:5 - (ae-undocumented) Missing documentation for "childProcessInstances".
2060-
// src/models.d.ts:65:5 - (ae-undocumented) Missing documentation for "error".
2061-
// src/models.d.ts:66:5 - (ae-undocumented) Missing documentation for "addons".
2062-
// src/models.d.ts:67:5 - (ae-undocumented) Missing documentation for "businessKey".
2063-
// src/models.d.ts:68:5 - (ae-undocumented) Missing documentation for "isSelected".
2064-
// src/models.d.ts:69:5 - (ae-undocumented) Missing documentation for "errorMessage".
2065-
// src/models.d.ts:70:5 - (ae-undocumented) Missing documentation for "isOpen".
2066-
// src/models.d.ts:71:5 - (ae-undocumented) Missing documentation for "diagram".
2067-
// src/models.d.ts:72:5 - (ae-undocumented) Missing documentation for "nodeDefinitions".
2068-
// src/models.d.ts:73:5 - (ae-undocumented) Missing documentation for "source".
2069-
// src/models.d.ts:74:5 - (ae-undocumented) Missing documentation for "category".
2070-
// src/models.d.ts:75:5 - (ae-undocumented) Missing documentation for "description".
2071-
// src/models.d.ts:77:1 - (ae-undocumented) Missing documentation for "IntrospectionQuery".
2072-
// src/models.d.ts:78:5 - (ae-undocumented) Missing documentation for "__type".
2073-
// src/models.d.ts:80:1 - (ae-undocumented) Missing documentation for "IntrospectionType".
2074-
// src/models.d.ts:81:5 - (ae-undocumented) Missing documentation for "name".
2075-
// src/models.d.ts:82:5 - (ae-undocumented) Missing documentation for "kind".
2076-
// src/models.d.ts:83:5 - (ae-undocumented) Missing documentation for "description".
2077-
// src/models.d.ts:84:5 - (ae-undocumented) Missing documentation for "fields".
2078-
// src/models.d.ts:86:1 - (ae-undocumented) Missing documentation for "IntrospectionField".
2079-
// src/models.d.ts:87:5 - (ae-undocumented) Missing documentation for "name".
2080-
// src/models.d.ts:88:5 - (ae-undocumented) Missing documentation for "type".
2081-
// src/models.d.ts:90:1 - (ae-undocumented) Missing documentation for "IntrospectionTypeRef".
2082-
// src/models.d.ts:91:5 - (ae-undocumented) Missing documentation for "kind".
2083-
// src/models.d.ts:92:5 - (ae-undocumented) Missing documentation for "name".
2084-
// src/models.d.ts:93:5 - (ae-undocumented) Missing documentation for "ofType".
2085-
// src/models.d.ts:95:1 - (ae-undocumented) Missing documentation for "TypeKind".
2086-
// src/models.d.ts:96:5 - (ae-undocumented) Missing documentation for "InputObject".
2087-
// src/models.d.ts:98:1 - (ae-undocumented) Missing documentation for "TypeName".
2088-
// src/models.d.ts:99:5 - (ae-undocumented) Missing documentation for "Id".
2089-
// src/models.d.ts:100:5 - (ae-undocumented) Missing documentation for "String".
2090-
// src/models.d.ts:101:5 - (ae-undocumented) Missing documentation for "Date".
2034+
// src/models.d.ts:25:5 - (ae-undocumented) Missing documentation for "errorMessage".
2035+
// src/models.d.ts:26:5 - (ae-undocumented) Missing documentation for "retrigger".
2036+
// src/models.d.ts:28:1 - (ae-undocumented) Missing documentation for "TriggerableNode".
2037+
// src/models.d.ts:29:5 - (ae-undocumented) Missing documentation for "id".
2038+
// src/models.d.ts:30:5 - (ae-undocumented) Missing documentation for "name".
2039+
// src/models.d.ts:31:5 - (ae-undocumented) Missing documentation for "type".
2040+
// src/models.d.ts:32:5 - (ae-undocumented) Missing documentation for "uniqueId".
2041+
// src/models.d.ts:33:5 - (ae-undocumented) Missing documentation for "nodeDefinitionId".
2042+
// src/models.d.ts:35:1 - (ae-undocumented) Missing documentation for "Milestone".
2043+
// src/models.d.ts:36:5 - (ae-undocumented) Missing documentation for "__typename".
2044+
// src/models.d.ts:37:5 - (ae-undocumented) Missing documentation for "id".
2045+
// src/models.d.ts:38:5 - (ae-undocumented) Missing documentation for "name".
2046+
// src/models.d.ts:39:5 - (ae-undocumented) Missing documentation for "status".
2047+
// src/models.d.ts:41:1 - (ae-undocumented) Missing documentation for "ProcessInstanceError".
2048+
// src/models.d.ts:42:5 - (ae-undocumented) Missing documentation for "__typename".
2049+
// src/models.d.ts:43:5 - (ae-undocumented) Missing documentation for "nodeDefinitionId".
2050+
// src/models.d.ts:44:5 - (ae-undocumented) Missing documentation for "nodeInstanceId".
2051+
// src/models.d.ts:45:5 - (ae-undocumented) Missing documentation for "message".
2052+
// src/models.d.ts:47:1 - (ae-undocumented) Missing documentation for "ProcessInstanceVariables".
2053+
// src/models.d.ts:48:1 - (ae-undocumented) Missing documentation for "ProcessInstance".
2054+
// src/models.d.ts:49:5 - (ae-undocumented) Missing documentation for "id".
2055+
// src/models.d.ts:50:5 - (ae-undocumented) Missing documentation for "processId".
2056+
// src/models.d.ts:51:5 - (ae-undocumented) Missing documentation for "processName".
2057+
// src/models.d.ts:52:5 - (ae-undocumented) Missing documentation for "parentProcessInstanceId".
2058+
// src/models.d.ts:53:5 - (ae-undocumented) Missing documentation for "rootProcessInstanceId".
2059+
// src/models.d.ts:54:5 - (ae-undocumented) Missing documentation for "rootProcessId".
2060+
// src/models.d.ts:55:5 - (ae-undocumented) Missing documentation for "roles".
2061+
// src/models.d.ts:56:5 - (ae-undocumented) Missing documentation for "state".
2062+
// src/models.d.ts:57:5 - (ae-undocumented) Missing documentation for "endpoint".
2063+
// src/models.d.ts:58:5 - (ae-undocumented) Missing documentation for "serviceUrl".
2064+
// src/models.d.ts:59:5 - (ae-undocumented) Missing documentation for "nodes".
2065+
// src/models.d.ts:60:5 - (ae-undocumented) Missing documentation for "milestones".
2066+
// src/models.d.ts:61:5 - (ae-undocumented) Missing documentation for "variables".
2067+
// src/models.d.ts:66:5 - (ae-undocumented) Missing documentation for "parentProcessInstance".
2068+
// src/models.d.ts:67:5 - (ae-undocumented) Missing documentation for "childProcessInstances".
2069+
// src/models.d.ts:68:5 - (ae-undocumented) Missing documentation for "error".
2070+
// src/models.d.ts:69:5 - (ae-undocumented) Missing documentation for "addons".
2071+
// src/models.d.ts:70:5 - (ae-undocumented) Missing documentation for "businessKey".
2072+
// src/models.d.ts:71:5 - (ae-undocumented) Missing documentation for "isSelected".
2073+
// src/models.d.ts:72:5 - (ae-undocumented) Missing documentation for "errorMessage".
2074+
// src/models.d.ts:73:5 - (ae-undocumented) Missing documentation for "isOpen".
2075+
// src/models.d.ts:74:5 - (ae-undocumented) Missing documentation for "diagram".
2076+
// src/models.d.ts:75:5 - (ae-undocumented) Missing documentation for "nodeDefinitions".
2077+
// src/models.d.ts:76:5 - (ae-undocumented) Missing documentation for "source".
2078+
// src/models.d.ts:77:5 - (ae-undocumented) Missing documentation for "category".
2079+
// src/models.d.ts:78:5 - (ae-undocumented) Missing documentation for "description".
2080+
// src/models.d.ts:80:1 - (ae-undocumented) Missing documentation for "IntrospectionQuery".
2081+
// src/models.d.ts:81:5 - (ae-undocumented) Missing documentation for "__type".
2082+
// src/models.d.ts:83:1 - (ae-undocumented) Missing documentation for "IntrospectionType".
2083+
// src/models.d.ts:84:5 - (ae-undocumented) Missing documentation for "name".
2084+
// src/models.d.ts:85:5 - (ae-undocumented) Missing documentation for "kind".
2085+
// src/models.d.ts:86:5 - (ae-undocumented) Missing documentation for "description".
2086+
// src/models.d.ts:87:5 - (ae-undocumented) Missing documentation for "fields".
2087+
// src/models.d.ts:89:1 - (ae-undocumented) Missing documentation for "IntrospectionField".
2088+
// src/models.d.ts:90:5 - (ae-undocumented) Missing documentation for "name".
2089+
// src/models.d.ts:91:5 - (ae-undocumented) Missing documentation for "type".
2090+
// src/models.d.ts:93:1 - (ae-undocumented) Missing documentation for "IntrospectionTypeRef".
2091+
// src/models.d.ts:94:5 - (ae-undocumented) Missing documentation for "kind".
2092+
// src/models.d.ts:95:5 - (ae-undocumented) Missing documentation for "name".
2093+
// src/models.d.ts:96:5 - (ae-undocumented) Missing documentation for "ofType".
2094+
// src/models.d.ts:98:1 - (ae-undocumented) Missing documentation for "TypeKind".
2095+
// src/models.d.ts:99:5 - (ae-undocumented) Missing documentation for "InputObject".
2096+
// src/models.d.ts:101:1 - (ae-undocumented) Missing documentation for "TypeName".
2097+
// src/models.d.ts:102:5 - (ae-undocumented) Missing documentation for "Id".
2098+
// src/models.d.ts:103:5 - (ae-undocumented) Missing documentation for "String".
2099+
// src/models.d.ts:104:5 - (ae-undocumented) Missing documentation for "Date".
20912100
// src/permissions.d.ts:1:22 - (ae-undocumented) Missing documentation for "orchestratorWorkflowPermission".
20922101
// src/permissions.d.ts:2:22 - (ae-undocumented) Missing documentation for "orchestratorWorkflowSpecificPermission".
20932102
// src/permissions.d.ts:3:22 - (ae-undocumented) Missing documentation for "orchestratorWorkflowUsePermission".

workspaces/orchestrator/plugins/orchestrator-common/src/models.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ export interface NodeInstance {
4444
exit?: string;
4545
definitionId: string;
4646
nodeId: string;
47+
errorMessage: string;
48+
retrigger: boolean;
4749
}
4850

4951
export interface TriggerableNode {
@@ -64,6 +66,7 @@ export interface Milestone {
6466
export interface ProcessInstanceError {
6567
__typename?: 'ProcessInstanceError';
6668
nodeDefinitionId: string;
69+
nodeInstanceId: string;
6770
message?: string;
6871
}
6972

0 commit comments

Comments
 (0)