# Concurrent Modification Exception when executing workflow

**URL:** https://community.temporal.io/t/concurrent-modification-exception-when-executing-workflow/12479
**Category:** Community Support
**Tags:** java-sdk
**Created:** [June 12, 2024, 2:06pm UTC](https://community.temporal.io/t/concurrent-modification-exception-when-executing-workflow/12479 "2024-06-12T14:06:37Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![rvr](https://avatars.discourse-cdn.com/v4/letter/r/f0a364/32.png) [@rvr](https://community.temporal.io/u/rvr)
#### Post date: [June 12, 2024, 2:06pm UTC](https://community.temporal.io/t/concurrent-modification-exception-when-executing-workflow/12479/1 "2024-06-12T14:06:37Z")

</div>

Hello,

I am getting the following error in the logs of my Java application which uses Temporal Java SDK:

```auto

java.util.ConcurrentModificationException: null
	at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1605)
	at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1628)
	at io.temporal.internal.replay.ReplayWorkflowRunTaskHandler$LocalActivityMeteringHelper.newWFTStarting(ReplayWorkflowRunTaskHandler.java:431)
	at io.temporal.internal.replay.ReplayWorkflowRunTaskHandler$LocalActivityMeteringHelper.access$200(ReplayWorkflowRunTaskHandler.java:425)
	at io.temporal.internal.replay.ReplayWorkflowRunTaskHandler.handleWorkflowTask(ReplayWorkflowRunTaskHandler.java:143)
	at io.temporal.internal.replay.ReplayWorkflowTaskHandler.handleWorkflowTaskWithQuery(ReplayWorkflowTaskHandler.java:133)
	at io.temporal.internal.replay.ReplayWorkflowTaskHandler.handleWorkflowTask(ReplayWorkflowTaskHandler.java:98)
	at io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.handleTask(WorkflowWorker.java:413)
	at io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.handle(WorkflowWorker.java:320)
	at io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.handle(WorkflowWorker.java:261)
	at io.temporal.internal.worker.PollTaskExecutor.lambda$process$0(PollTaskExecutor.java:105)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)

```

Most of the time (but not always) the workflow gets stuck on this, but still it gets printed to the logs every few seconds.

In my workflow I am using two lists to keep track of the state. I have a few local activities that run in a loop until the processing is done.

I am using SDK version 1.22.3.

Do you know what might be causing this? Could it be a configuration issue on my side?

Thanks!

---

<div class="post-metadata">

### Author: ![maxim](https://sea2.discourse-cdn.com/flex016/user_avatar/community.temporal.io/maxim/32/8_2.png) [@maxim](https://community.temporal.io/u/maxim)
#### Post date: [June 12, 2024, 6:52pm UTC](https://community.temporal.io/t/concurrent-modification-exception-when-executing-workflow/12479/2 "2024-06-12T18:52:28Z")

</div>

We are looking into this.

---

<div class="post-metadata">

### Author: ![Quinn\_Klassen](https://sea2.discourse-cdn.com/flex016/user_avatar/community.temporal.io/quinn_klassen/32/3948_2.png) [@Quinn\_Klassen](https://community.temporal.io/u/Quinn_Klassen)
#### Post date: [June 12, 2024, 9:25pm UTC](https://community.temporal.io/t/concurrent-modification-exception-when-executing-workflow/12479/3 "2024-06-12T21:25:36Z")

</div>

> [@rvr](#):
>
> ```auto
> java.util.ConcurrentModificationException: null
> at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1605)
> at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1628)
> at io.temporal.internal.replay.ReplayWorkflowRunTaskHandler$LocalActivityMeteringHelper.newWFTStarting(ReplayWorkflowRunTaskHandler.java:431)
> at io.temporal.internal.replay.ReplayWorkflowRunTaskHandler$LocalActivityMeteringHelper.access$200(ReplayWorkflowRunTaskHandler.java:425)
> at io.temporal.internal.replay.ReplayWorkflowRunTaskHandler.handleWorkflowTask(ReplayWorkflowRunTaskHandler.java:143)
> at io.temporal.internal.replay.ReplayWorkflowTaskHandler.handleWorkflowTaskWithQuery(ReplayWorkflowTaskHandler.java:133)
> at io.temporal.internal.replay.ReplayWorkflowTaskHandler.handleWorkflowTask(ReplayWorkflowTaskHandler.java:98)
> at io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.handleTask(WorkflowWorker.java:413)
> at io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.handle(WorkflowWorker.java:320)
> at io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.handle(WorkflowWorker.java:261)
> at io.temporal.internal.worker.PollTaskExecutor.lambda$process$0(PollTaskExecutor.java:105)
> at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
> at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
> at java.base/java.lang.Thread.run(Thread.java:1583)
> 
> ```

Confirmed this is a bug in the Java SDK. We have opened an issue and it should be resolved for the next Java SDK release that we are targeting for next week.

> <https://github.com/temporalio/sdk-java/issues/2107>
>
> \## Issue
> 
> When executing workflow tasks with local activities \`LocalActivityMe…teringHelper\` may attempt to make illegal modifications to its underlying data structure when calling \`newWFTStarting\` causing a \`ConcurrentModificationException\`
> 
> \## Example: 
> \`\`\`
> java.util.ConcurrentModificationException: null
> at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1605)
> at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1628)
> at io.temporal.internal.replay.ReplayWorkflowRunTaskHandler$LocalActivityMeteringHelper.newWFTStarting(ReplayWorkflowRunTaskHandler.java:431)
> at io.temporal.internal.replay.ReplayWorkflowRunTaskHandler$LocalActivityMeteringHelper.access$200(ReplayWorkflowRunTaskHandler.java:425)
> at io.temporal.internal.replay.ReplayWorkflowRunTaskHandler.handleWorkflowTask(ReplayWorkflowRunTaskHandler.java:143)
> at io.temporal.internal.replay.ReplayWorkflowTaskHandler.handleWorkflowTaskWithQuery(ReplayWorkflowTaskHandler.java:133)
> at io.temporal.internal.replay.ReplayWorkflowTaskHandler.handleWorkflowTask(ReplayWorkflowTaskHandler.java:98)
> at io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.handleTask(WorkflowWorker.java:413)
> at io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.handle(WorkflowWorker.java:320)
> at io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.handle(WorkflowWorker.java:261)
> at io.temporal.internal.worker.PollTaskExecutor.lambda$process$0(PollTaskExecutor.java:105)
> at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
> at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
> at java.base/java.lang.Thread.run(Thread.java:1583)
> \`\`\`
> 
> https://community.temporal.io/t/concurrent-modification-exception-when-executing-workflow/12479/1
> 
> \## Specifications
> 
> - Platform: 1.23.1

---

<div class="post-metadata">

### Author: ![rvr](https://avatars.discourse-cdn.com/v4/letter/r/f0a364/32.png) [@rvr](https://community.temporal.io/u/rvr)
#### Post date: [June 13, 2024, 7:10am UTC](https://community.temporal.io/t/concurrent-modification-exception-when-executing-workflow/12479/4 "2024-06-13T07:10:43Z")

</div>

Thank you for your quick response!
