ImageDisplayService concurrency issue
- Dominant language
- Java
- Stars
- 12
- Forks
- 15
- PR merge metrics
- No merged PRs in 30d
Description
Calling `ImageDisplay.update()` from multiple threads fails:
```
org.scijava.module.MethodCallException: Error executing method: net.imagej.MorphologicalFilters#previewChanged
at org.scijava.module.MethodRef.execute(MethodRef.java:74)
at org.scijava.module.AbstractModuleItem.callback(AbstractModuleItem.java:230)
at org.scijava.widget.DefaultWidgetModel.callback(DefaultWidgetModel.java:188)
at org.scijava.widget.DefaultWidgetModel$1.run(DefaultWidgetModel.java:177)
at org.scijava.thread.DefaultThreadService$2.run(DefaultThreadService.java:221)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.scijava.module.MethodRef.execute(MethodRef.java:70)
... 9 more
Caused by: java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)
at net.imagej.display.DefaultImageDisplay.update(DefaultImageDisplay.java:298)
at net.imagej.MorphologicalFilters.previewChanged(MorphologicalFilters.java:83)
... 13 more
```
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with net.imagej.display.DefaultImageDisplay.update, where the stack trace reports a ConcurrentModificationException, and review how concurrent calls from ImageDisplay.update reach it through MorphologicalFilters.previewChanged. Reproduce the failure with multiple threads and verify that concurrent updates no longer fail with this exception.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- data-visualization
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100