samples-java icon indicating copy to clipboard operation
samples-java copied to clipboard

[Bug] moneybatcher sample race condition?

Open derwasp opened this issue 5 months ago • 0 comments

What are you really trying to do?

I am trying to learn how to do batching using temporal. I found the moneybatch sample and I wanted to make sure that it can handle requests in parallel.

To simulate the behavior, I changed the workflow to withdraw more times than a single batch size as well as added a delay during the deposit call. What this lead to is that the workflow would continue to run and not complete, it won't even process a single batch.

Describe the bug

This is related to the condition in the workflow: Workflow.await(() -> count == batchSize);

If count suddenly goes from 0 to a value greater than batchSize, the workflow will continue to run and not complete.

I am new to temporal, so I am not quite sure how to fix this. Is this a bug in the sample or am I doing something wrong?

Image Image

Minimal Reproduction

Download this branch: https://github.com/derwasp/samples-java/tree/derwasp/moneybatcher

Either run ./run-moneybatch-demo.sh and observe the logs. Or run the test TransferWorkflowTest and see the failure.

Environment/Versions

  • OS and processor: M4 Mac
  • Temporal Version: (CLI version 1.4.1)
  • Are you using Docker or Kubernetes or building Temporal from source? Docker

Additional context

derwasp avatar Jul 30 '25 14:07 derwasp