temporalio / temporalio/sdk-java
Subsequent MutableSideEffect calls inside one Workflow Task may explode with non-determinism on replay
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 433
- Forks
- 249
- Avg merge
- 5d 6h
- Merged PRs (30d)
- 26
Description
Actual Behavior
Consider a workflow that has 3 calls to the same ID back to back
...
encodedValue1 := workflow.MutableSideEffect(ctx, "id", ...)
encodedValue2 := workflow.MutableSideEffect(ctx, "id", ...)
encodedValue3 := workflow.MutableSideEffect(ctx, "id", ...)
...
And say encodedValue1==encodedValue2 and encodedValue3 are different on the original run.
This makes 2 markers will be in history.
On replay the marker created by the third mutable side effect call will be applied to a second call instead causing a non-deterministic replay.
Context
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the Java SDK implementation of workflow.MutableSideEffect and reproduce the three-call sequence described in the issue, using the GoSDK issue as context. Trace how markers are matched during replay; the fix is complete when repeated calls with the same ID replay deterministically without assigning a later marker to the wrong call.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100