diff --git a/server/rpc/rpc.go b/server/rpc/rpc.go index d02b72e94..f899fe5ee 100644 --- a/server/rpc/rpc.go +++ b/server/rpc/rpc.go @@ -350,17 +350,23 @@ func (s *RPC) Done(c context.Context, strWorkflowID string, state rpc.WorkflowSt logger.Error().Err(err).Msgf("pipeline.UpdateWorkflowStatusToDone: cannot update workflow state: %s", err) } + var queueErr error if !state.Canceled { - var queueErr error if workflow.Failing() { queueErr = s.queue.Error(c, strWorkflowID, fmt.Errorf("workflow finished with error %s", state.Error)) } else { queueErr = s.queue.Done(c, strWorkflowID, workflow.State) } - if queueErr != nil { - logger.Error().Err(queueErr).Msg("queue.Done: cannot ack workflow") + } else { + if workflow.Started > 0 { + queueErr = s.queue.Done(c, strWorkflowID, model.StatusKilled) + } else { + queueErr = s.queue.Done(c, strWorkflowID, model.StatusCanceled) } } + if queueErr != nil { + logger.Error().Err(queueErr).Msg("queue.Done: cannot ack workflow") + } currentPipeline.Workflows, err = s.store.WorkflowGetTree(currentPipeline) if err != nil {