cadence-workflow / cadence-go-client

Framework for authoring workflows and activities running on top of the Cadence orchestration engine.
https://cadenceworkflow.io
MIT License
352 stars 132 forks source link

Error "unable to decode argument" if return nil from child workflow #1016

Open uskyt opened 4 years ago

uskyt commented 4 years ago

Describe the bug I am writing a cadence workflow that starts some child workflows like this:

var result interface{}
workflow.ExecuteChildWorkflow(childCtx, MyWorkflowName, arg1, arg2).Get(childCtx, &result)

But this fails if the workflows return nil as result. I get "unable to decode argument: %d, %v, with json error: %v" from cadence/internal/encoding.go:67. Specifically unable to decode argument: 0, *interface {}, with json error: EOF

To Reproduce Can be easily reproduced as described above.

Additional context The problem is similar to the one solved in this issue: https://github.com/uber-go/cadence-client/issues/943

vytautas-karpavicius commented 4 years ago

Reproduced. However this only occurs with return type of interface{}. Any other type works fine.

xn3cr0nx commented 2 years ago

Hello @vytautas-karpavicius, facing this issue while trying to implement a generic child workflow invocation (similar to dsl from samples) and interface type is required to support most of the cases. Taking into account it was fixed for activities, I'm not sure why a fix for this was not taken into account, not clear from your response above. Any chance this can be fixed?