Closed cbrewster closed 1 month ago
Thanks for the detailed report! The activity completion definitely should be delivered before update on replay if it was originally. We will likely treat this as a high priority (granted updates are not yet GA for these kinds of reasons).
While the linked PR there fixes the issue, note that the fix will not be available until the next Python release that includes the next Core upgrade.
What are you really trying to do?
I have a workflow which runs various activities depending on signals/updates from the user. The workflow keeps track of the current state (running, stopped) using a counter to keep track of how many activities are currently running. There is a resume update which we only want to start an activity if there isn't already an activity running.
I've implemented this but during replays we are seeing non-determinism errors. I've made a minimal reproduction of this.
Describe the bug
We're seeing workflow replays that cause events to be processed in a different order than how the events originally came in:
Original order of events:
During replay we get a different order which causes the NDE:
Minimal Reproduction
This reproduction runs the workflow and then automatically replays the workflow to demonstrate the nondeterminism error.
Environment/Versions
Additional Comments
Replacing the update with a signal instead does not have the same issue.