英文:
Intermittent JSON Unmarshalling Error when using serverless workflow go sdk
问题
我有一个仓库https://github.com/BuilderHarrison/temporal-hello-world-dsl,当我运行它时,有50%的概率失败,50%的概率成功。我对Temporal和Serverless SDK都非常陌生,所以我无法弄清楚如何进行故障排除。我遇到的问题是:
{
"type": "workflowExecutionFailedEventAttributes",
"failure": {
"message": "无法解码工作流函数输入有效负载,错误为:有效负载项0:无法解码:json:无法将对象解组为类型为字符串的Go结构体字段Workflow.Start,函数名称:HelloWorld",
"source": "GoSDK",
"stackTrace": "",
"cause": {
"message": "有效负载项0:无法解码:json:无法将对象解组为类型为字符串的Go结构体字段Workflow.Start",
"source": "GoSDK",
"stackTrace": "",
"cause": {
"message": "无法解码:json:无法将对象解组为类型为字符串的Go结构体字段Workflow.Start",
"source": "GoSDK",
"stackTrace": "",
"cause": {
"message": "无法解码",
"source": "GoSDK",
"stackTrace": "",
"cause": null,
"applicationFailureInfo": {
"type": "",
"nonRetryable": false,
"details": null
}
},
"applicationFailureInfo": {
"type": "wrapError",
"nonRetryable": false,
"details": null
}
},
"applicationFailureInfo": {
"type": "wrapError",
"nonRetryable": false,
"details": null
}
},
"applicationFailureInfo": {
"type": "wrapError",
"nonRetryable": false,
"details": null
}
},
"retryState": "RetryPolicyNotSet",
"workflowTaskCompletedEventId": "7",
"newExecutionRunId": ""
}
供参考的JSON文件如下:
{
"id": "helloworld",
"version": "1.0",
"specVersion": "0.8",
"name": "Hello World Workflow",
"description": "Hello World",
"start": "Hello State",
"states": [
{
"name": "Hello State",
"type": "operation",
"actionMode": "sequential",
"actions": [
{
"functionRef": {
"refName": "PrintHelloWorld1",
"arguments": {
"arg1": "Hello World1!"
}
}
},
{"functionRef": {
"refName": "PrintHelloWorld2",
"arguments": {
"arg1": "Hello World2!"
}
}
}
],
"end": true
}
]
}
希望能得到帮助!
祝好,
Harrison
英文:
i've got a repo https://github.com/BuilderHarrison/temporal-hello-world-dsl and when i run it, it fails 50% of the time and succeeds 50% of the time. I am very new to both temporal and the serverless sdk. So im unable to quite figure out how to proceed with debugging the issue. The issue im getting is:
{
"type": "workflowExecutionFailedEventAttributes",
"failure": {
"message": "unable to decode the workflow function input payload with error: payload item 0: unable to decode: json: cannot unmarshal object into Go struct field Workflow.Start of type string, function name: HelloWorld",
"source": "GoSDK",
"stackTrace": "",
"cause": {
"message": "payload item 0: unable to decode: json: cannot unmarshal object into Go struct field Workflow.Start of type string",
"source": "GoSDK",
"stackTrace": "",
"cause": {
"message": "unable to decode: json: cannot unmarshal object into Go struct field Workflow.Start of type string",
"source": "GoSDK",
"stackTrace": "",
"cause": {
"message": "unable to decode",
"source": "GoSDK",
"stackTrace": "",
"cause": null,
"applicationFailureInfo": {
"type": "",
"nonRetryable": false,
"details": null
}
},
"applicationFailureInfo": {
"type": "wrapError",
"nonRetryable": false,
"details": null
}
},
"applicationFailureInfo": {
"type": "wrapError",
"nonRetryable": false,
"details": null
}
},
"applicationFailureInfo": {
"type": "wrapError",
"nonRetryable": false,
"details": null
}
},
"retryState": "RetryPolicyNotSet",
"workflowTaskCompletedEventId": "7",
"newExecutionRunId": ""
}
For reference the json file im providing is:
{
"id": "helloworld",
"version": "1.0",
"specVersion": "0.8",
"name": "Hello World Workflow",
"description": "Hello World",
"start": "Hello State",
"states": [
{
"name": "Hello State",
"type": "operation",
"actionMode": "sequential",
"actions": [
{
"functionRef": {
"refName": "PrintHelloWorld1",
"arguments": {
"arg1": "Hello World1!"
}
}
},
{"functionRef": {
"refName": "PrintHelloWorld2",
"arguments": {
"arg1": "Hello World2!"
}
}
}
],
"end": true
}
]
}
Any assistance would be appreciated!
Cheers,
Harrison
答案1
得分: 4
50%的错误通常是由于存在两个Worker进程,其中一个是在旧版本/不兼容的代码上运行。你是否有可能在不同的shell或后台中有一个旧的Worker进程?
英文:
The 50%-of-the-time errors are often due to the presence of two Worker processes, one of which is on an older / incompatible version of the code. Is there a chance you have an old Worker process in a different shell or in the background?
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论