Open mfateev opened 5 years ago
We ran into another somewhat related issue where we were unable to set a nil
mutable side effect value via the GOLANG API.
FYI: I've decided not to use the MutableSideEffect()
function for the .NET Cadence Client and am using local activities combined with a local dictionary to achieve (what I believe is) the same effect. I'm also been tweaking some of the terminology to hopefully make things easier to understand for new .NET workflow developers. I'm replacing the mutable side effect phrase and am going to call these workflow variables instead and am implementing a GetVariable()/SetVariable()
pattern instead.
So, this issue no longer really matters for the .NET client.
We've made some other similar changes and after we get a first cut of this all working in a week or two I'd love to sit down with you folks and go over these to see what you think (e.g. do you hate the changes?).
The use case of MutableSide effect is to be able to poll for some external state changes from the workflow code without recording a Marker on every check. When using local activity a marker is recorded on every invocation.
Would you explain how workflow variables are intended to be used?
Do you plan to move the Cadence .NET client out of the NEON repo into a stand alone repository?
We're developing this in the open and will be releasing it as open source under the Apache 2.0 License. Here's a link to the readme for the overall repo:
https://github.com/nforgeio/neonKUBE
And more links inside to the .NET and GOLANG source:
https://github.com/nforgeio/neonKUBE/tree/master/Lib/Neon.Cadence https://github.com/nforgeio/neonKUBE/blob/master/Go/src/github.com/cadence-proxy/README.md
We totally misunderstood the mutable side effect use case and didn't realize these could be set externally, so I'll need to rethink this (and we'll probably care about this issue again).
BTW: We're also located in Seattle.
I did a quick look at the code and it looks like you are defining APIs which are very different from the Java Client. We would prefer for APIs be as much consistent as possible among languages.
I can come to your office to sync on the project. Contact me directly on Slack to schedule.
To reproduce:
Failure: