uber-go / cadence-client

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

protobuf Oneof field serialization+deseriablization not supported by Cadence #1296

Open jiaoyli opened 7 months ago

jiaoyli commented 7 months ago

Describe the bug passing OneOf field in request will fail with error:

'''json: cannot unmarshal object into Go struct field'''

To Reproduce Is the issue reproducible?

Steps to reproduce the behavior: Create a Cadence workflow that takes in a request field that contains a OneOf protobuf field. Deserializing the input will fail with error '''json: cannot unmarshal object into Go struct field'''

Expected behavior the oneof field should be supported.

Additional context The root cause could be because cadence uses encode/json for serialization+deserialization. And this lib doesn't work for oneof fields. My current workaround is: before calling cadence, convert fields that contain Oneof to json string with package: "github.com/gogo/protobuf/jsonpb". then convert it back to proto field in Cadence workflow.