diff --git a/test/e2e/cli_test.go b/test/e2e/cli_test.go index 6c84c4e2c4d8..95c12c39ff6b 100644 --- a/test/e2e/cli_test.go +++ b/test/e2e/cli_test.go @@ -938,7 +938,7 @@ func (s *CLISuite) TestRetryWorkflowWithContinueOn() { Then(). ExpectWorkflow(func(t *testing.T, metadata *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { workflowName = metadata.Name - assert.Equal(t, 6, len(status.Nodes)) + assert.Equal(t, 7, len(status.Nodes)) }). RunCli([]string{"retry", workflowName}, func(t *testing.T, output string, err error) { if assert.NoError(t, err, output) { @@ -954,10 +954,10 @@ func (s *CLISuite) TestRetryWorkflowWithContinueOn() { ExpectWorkflow(func(t *testing.T, metadata *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { workflowName = metadata.Name assert.Equal(t, wfv1.WorkflowFailed, status.Phase) - assert.Equal(t, 6, len(status.Nodes)) + assert.Equal(t, 7, len(status.Nodes)) }). ExpectWorkflowNode(func(status wfv1.NodeStatus) bool { - return strings.Contains(status.Name, "retry-workflow-with-continueon.success") + return strings.Contains(status.Name, ".success") }, func(t *testing.T, status *wfv1.NodeStatus, pod *corev1.Pod) { assert.Equal(t, 2, len(status.Children)) }) diff --git a/test/e2e/testdata/retry-workflow-with-continueon.yaml b/test/e2e/testdata/retry-workflow-with-continueon.yaml index 9d2ce1414860..43a3b5670078 100644 --- a/test/e2e/testdata/retry-workflow-with-continueon.yaml +++ b/test/e2e/testdata/retry-workflow-with-continueon.yaml @@ -6,6 +6,9 @@ spec: entrypoint: dag templates: - name: dag + retryStrategy: + limit: 2 + retryPolicy: OnError dag: failFast: false tasks: diff --git a/workflow/util/util.go b/workflow/util/util.go index 8917c51c1d3c..5cadd22cbab9 100644 --- a/workflow/util/util.go +++ b/workflow/util/util.go @@ -971,7 +971,7 @@ func FormulateRetryWorkflow(ctx context.Context, wf *wfv1.Workflow, restartSucce log.Debugf("Reset %s node %s since it's a group node", node.Name, string(node.Phase)) continue } else { - if isDescendantNodeSucceeded(wf, node, nodeIDsToReset) { + if node.Type != wfv1.NodeTypeRetry && isDescendantNodeSucceeded(wf, node, nodeIDsToReset) { log.Debugf("Node %s remains as is since it has succeed child nodes.", node.Name) newWF.Status.Nodes.Set(node.ID, node) continue