(ctx context.Context, nodeName string, node *wfv1.NodeStatus, processedTmpl *wfv1.Template)
| 2529 | } |
| 2530 | |
| 2531 | func (woc *wfOperationCtx) handleNodeFulfilled(ctx context.Context, nodeName string, node *wfv1.NodeStatus, processedTmpl *wfv1.Template) *wfv1.NodeStatus { |
| 2532 | if node == nil || !node.Phase.Fulfilled(node.TaskResultSynced) { |
| 2533 | return nil |
| 2534 | } |
| 2535 | |
| 2536 | woc.log.WithField("nodeName", nodeName).Debug(ctx, "Node already completed") |
| 2537 | |
| 2538 | if processedTmpl.Metrics != nil { |
| 2539 | // Check if this node completed between executions. If it did, emit metrics. |
| 2540 | // We can infer that this node completed during the current operation, emit metrics |
| 2541 | if prevNodeStatus, ok := woc.preExecutionNodeStatuses[node.ID]; ok && !prevNodeStatus.Fulfilled() { |
| 2542 | localScope, realTimeScope := woc.prepareMetricScope(node) |
| 2543 | woc.computeMetrics(ctx, processedTmpl.Metrics.Prometheus, localScope, realTimeScope, false) |
| 2544 | } |
| 2545 | } |
| 2546 | return node |
| 2547 | } |
| 2548 | |
| 2549 | // Checks if the template has exceeded its deadline |
| 2550 | func (woc *wfOperationCtx) checkTemplateTimeout(tmpl *wfv1.Template, node *wfv1.NodeStatus) (*time.Time, error) { |
no test coverage detected