diff --git a/pkg/controller/controllers/workflow_controller.go b/pkg/controller/controllers/workflow_controller.go index 4fabcf2..4c7df63 100644 --- a/pkg/controller/controllers/workflow_controller.go +++ b/pkg/controller/controllers/workflow_controller.go @@ -136,10 +136,21 @@ func (this *WorkflowController) execNextNode(job api.Job) { // deal with ret result var result []interface{} - if err := json.Unmarshal([]byte(job.Result), &result); err != nil { - log.Error("Error unmarshaling Result: %s", err.Error()) - this.errorEnd(job.JobID, "Error unmarshaling Result in function "+workflowStatus.currNode.Function.Name) - return + trimmedResult := strings.TrimSpace(job.Result) + if strings.HasPrefix(trimmedResult, "[") { + // Handle as JSON array + if err := json.Unmarshal([]byte(trimmedResult), &result); err != nil { + log.Error("Error unmarshaling Result: %s", err.Error()) + return + } + } else { + // Handle as single string + var singleResult string + if err := json.Unmarshal([]byte(trimmedResult), &singleResult); err != nil { + log.Error("Error unmarshaling single Result: %s", err.Error()) + return + } + result = append(result, singleResult) } result_str := function_util.ConvertToStringList(result) resWithName, _ := function_util.CheckParams(workflowStatus.retRes, result_str) @@ -198,6 +209,10 @@ func (this *WorkflowController) execNextNode(job api.Job) { } func (this *WorkflowController) errorEnd(jobUUID string, err string) { + if this.jobList[jobUUID] == nil { + log.Error("Can't find workflow uuid by job uuid: %s", jobUUID) + return + } updateResult([]string{"Error", err}, this.jobList[jobUUID]) delete(this.jobList, jobUUID) } diff --git a/testdata/workflow1/OrderFailed.yaml b/testdata/workflow1/OrderFailed.yaml index 6251d2e..678278c 100644 --- a/testdata/workflow1/OrderFailed.yaml +++ b/testdata/workflow1/OrderFailed.yaml @@ -1,7 +1,7 @@ apiVersion: v1 kind: Function metadata: - name: OrderSucceeded + name: OrderFailed language: python filePath: /root/minik8s/testdata/workflow1/OrderFailed/ triggerType: @@ -13,4 +13,5 @@ params: type: string result: - name: result - type: string \ No newline at end of file + type: string + # etcdctl put /trigger/default/BuyTrainTicket {\"x\":1000} --endpoints=192.168.3.8:2379 \ No newline at end of file diff --git a/yaml/trigger.yaml b/yaml/trigger.yaml index 3d9c051..f597c34 100644 --- a/yaml/trigger.yaml +++ b/yaml/trigger.yaml @@ -3,4 +3,4 @@ kind: Trigger spec: type: etcdTrigger functionNamespace: default - functionName: matrix-calculate \ No newline at end of file + functionName: BuyTrainTicket \ No newline at end of file