You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A ConcurrentModificationException can happen in the Datafeed (DF) loop upon startup.
The access to the listeners collection in the DF loop is not protected and accessed by multiple threads. Synchronizing the list should help to that matter.
Steps to Reproduce:
This is not always happening but restarting a bot using the DF loop and receiving events while starting should raise the issue.
Expected Result:
No exception.
Actual Result:
2021-03-15T17:28:38,530Z DEBUG [SymphonyBdk_DatafeedThread-111] c.s.b.c.r.RetryWithRecovery : Exception recovered
java.util.ConcurrentModificationException: null
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:911) ~[?:1.8.0_272]
at java.util.ArrayList$Itr.next(ArrayList.java:861) ~[?:1.8.0_272]
at com.symphony.bdk.core.service.datafeed.impl.AbstractDatafeedLoop.handleV4EventList(AbstractDatafeedLoop.java:82) ~[symphony-bdk-core-2.1.1.jar!/:2.1.1]
at com.symphony.bdk.core.service.datafeed.impl.DatafeedLoopV1.readAndHandleEvents(DatafeedLoopV1.java:109) ~[symphony-bdk-core-2.1.1.jar!/:2.1.1]
at com.symphony.bdk.core.retry.RetryWithRecovery.executeOnce(RetryWithRecovery.java:95) ~[symphony-bdk-core-2.1.1.jar!/:2.1.1]
at io.github.resilience4j.retry.Retry.lambda$decorateCheckedSupplier$3f69f149$1(Retry.java:137) ~[resilience4j-retry-1.5.0.jar!/:1.5.0]
at io.github.resilience4j.retry.Retry.executeCheckedSupplier(Retry.java:419) ~[resilience4j-retry-1.5.0.jar!/:1.5.0]
at com.symphony.bdk.core.retry.resilience4j.Resilience4jRetryWithRecovery.execute(Resilience4jRetryWithRecovery.java:65) ~[symphony-bdk-core-2.1.1.jar!/:2.1.1]
at com.symphony.bdk.core.service.datafeed.impl.DatafeedLoopV1.readDatafeed(DatafeedLoopV1.java:121) ~[symphony-bdk-core-2.1.1.jar!/:2.1.1]
at com.symphony.bdk.core.service.datafeed.impl.DatafeedLoopV1.start(DatafeedLoopV1.java:86) ~[symphony-bdk-core-2.1.1.jar!/:2.1.1]
at com.symphony.bdk.spring.service.DatafeedAsyncLauncherService.uncheckedStart(DatafeedAsyncLauncherService.java:88) ~[symphony-bdk-core-spring-boot-starter-2.1.1.jar!/:2.1.1]
at com.symphony.bdk.http.api.tracing.MDCUtils$MdcRunnable.run(MDCUtils.java:59) [symphony-bdk-http-api-2.1.1.jar!/:2.1.1]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_272]
The text was updated successfully, but these errors were encountered:
A ConcurrentModificationException can happen in the Datafeed (DF) loop upon startup.
The access to the listeners collection in the DF loop is not protected
and accessed by multiple threads.
Because of the for loop we need to synchronize on the list itself.
A ConcurrentModificationException can happen in the Datafeed (DF) loop upon startup.
The access to the listeners collection in the DF loop is not protected
and accessed by multiple threads.
Because of the for loop we need to synchronize on the list itself.
symphony-youri
added a commit
to symphony-youri/symphony-api-client-java
that referenced
this issue
Mar 17, 2021
…#476)
A ConcurrentModificationException can happen in the Datafeed (DF) loop upon startup.
The access to the listeners collection in the DF loop is not protected
and accessed by multiple threads.
Because of the for loop we need to synchronize on the list itself.
(cherry picked from commit c9fc39c)
Bug Report
A ConcurrentModificationException can happen in the Datafeed (DF) loop upon startup.
The access to the
listeners
collection in the DF loop is not protected and accessed by multiple threads. Synchronizing the list should help to that matter.Steps to Reproduce:
This is not always happening but restarting a bot using the DF loop and receiving events while starting should raise the issue.
Expected Result:
No exception.
Actual Result:
The text was updated successfully, but these errors were encountered: