Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ConcurrentModificationException: null while closing a context #1349

Closed
yuri-sergiichuk opened this issue Jan 5, 2021 · 1 comment
Closed
Assignees
Labels

Comments

@yuri-sergiichuk
Copy link
Contributor

yuri-sergiichuk commented Jan 5, 2021

In one of our products we've seen a ConcurrentModificationException being thrown from inside of the ThirdPartyContext#close routine with the following stacktrace:

java.util.ConcurrentModificationException: null
at io.spine.server.integration.ConfigurationChangeObserver.findStale (ConfigurationChangeObserver.java:149)
at io.spine.server.integration.ConfigurationChangeObserver.clearStaleSubscriptions (ConfigurationChangeObserver.java:125)
at io.spine.server.integration.ConfigurationChangeObserver.handle (ConfigurationChangeObserver.java:95)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:46)
at io.spine.server.transport.Subscriber.callObservers (Subscriber.java:103)
at io.spine.server.transport.Subscriber.onMessage (Subscriber.java:98)
at io.spine.server.transport.memory.InMemoryPublisher.publish (InMemoryPublisher.java:61)
at io.spine.server.integration.ConfigurationBroadcast.send (ConfigurationBroadcast.java:79)
at io.spine.server.integration.IntegrationBroker.notifyOthers (IntegrationBroker.java:265)
at io.spine.server.integration.ConfigurationChangeObserver.handle (ConfigurationChangeObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:46)
at io.spine.server.transport.Subscriber.callObservers (Subscriber.java:103)
at io.spine.server.transport.Subscriber.onMessage (Subscriber.java:98)
at io.spine.server.transport.memory.InMemoryPublisher.publish (InMemoryPublisher.java:61)
at io.spine.server.integration.ConfigurationBroadcast.send (ConfigurationBroadcast.java:79)
at io.spine.server.integration.IntegrationBroker.notifyOthers (IntegrationBroker.java:265)
at io.spine.server.integration.ConfigurationChangeObserver.handle (ConfigurationChangeObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:46)
at io.spine.server.transport.Subscriber.callObservers (Subscriber.java:103)
at io.spine.server.transport.Subscriber.onMessage (Subscriber.java:98)
at io.spine.server.transport.memory.InMemoryPublisher.publish (InMemoryPublisher.java:61)
at io.spine.server.integration.ConfigurationBroadcast.send (ConfigurationBroadcast.java:79)
at io.spine.server.integration.IntegrationBroker.notifyOthers (IntegrationBroker.java:265)
at io.spine.server.integration.ConfigurationChangeObserver.handle (ConfigurationChangeObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:46)
at io.spine.server.transport.Subscriber.callObservers (Subscriber.java:103)
at io.spine.server.transport.Subscriber.onMessage (Subscriber.java:98)
at io.spine.server.transport.memory.InMemoryPublisher.publish (InMemoryPublisher.java:61)
at io.spine.server.integration.ConfigurationBroadcast.send (ConfigurationBroadcast.java:79)
at io.spine.server.integration.IntegrationBroker.notifyOthers (IntegrationBroker.java:265)
at io.spine.server.integration.ConfigurationChangeObserver.handle (ConfigurationChangeObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:46)
at io.spine.server.transport.Subscriber.callObservers (Subscriber.java:103)
at io.spine.server.transport.Subscriber.onMessage (Subscriber.java:98)
at io.spine.server.transport.memory.InMemoryPublisher.publish (InMemoryPublisher.java:61)
at io.spine.server.integration.ConfigurationBroadcast.send (ConfigurationBroadcast.java:79)
at io.spine.server.integration.IntegrationBroker.notifyOthers (IntegrationBroker.java:265)
at io.spine.server.integration.ConfigurationChangeObserver.handle (ConfigurationChangeObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:46)
at io.spine.server.transport.Subscriber.callObservers (Subscriber.java:103)
at io.spine.server.transport.Subscriber.onMessage (Subscriber.java:98)
at io.spine.server.transport.memory.InMemoryPublisher.publish (InMemoryPublisher.java:61)
at io.spine.server.integration.ConfigurationBroadcast.send (ConfigurationBroadcast.java:79)
at io.spine.server.integration.IntegrationBroker.notifyOthers (IntegrationBroker.java:265)
at io.spine.server.integration.ConfigurationChangeObserver.handle (ConfigurationChangeObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:46)
at io.spine.server.transport.Subscriber.callObservers (Subscriber.java:103)
at io.spine.server.transport.Subscriber.onMessage (Subscriber.java:98)
at io.spine.server.transport.memory.InMemoryPublisher.publish (InMemoryPublisher.java:61)
at io.spine.server.integration.ConfigurationBroadcast.send (ConfigurationBroadcast.java:79)
at io.spine.server.integration.IntegrationBroker.notifyOthers (IntegrationBroker.java:265)
at io.spine.server.integration.ConfigurationChangeObserver.handle (ConfigurationChangeObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:46)
at io.spine.server.transport.Subscriber.callObservers (Subscriber.java:103)
at io.spine.server.transport.Subscriber.onMessage (Subscriber.java:98)
at io.spine.server.transport.memory.InMemoryPublisher.publish (InMemoryPublisher.java:61)
at io.spine.server.integration.ConfigurationBroadcast.send (ConfigurationBroadcast.java:79)
at io.spine.server.integration.IntegrationBroker.notifyOthers (IntegrationBroker.java:265)
at io.spine.server.integration.ConfigurationChangeObserver.handle (ConfigurationChangeObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:46)
at io.spine.server.transport.Subscriber.callObservers (Subscriber.java:103)
at io.spine.server.transport.Subscriber.onMessage (Subscriber.java:98)
at io.spine.server.transport.memory.InMemoryPublisher.publish (InMemoryPublisher.java:61)
at io.spine.server.integration.ConfigurationBroadcast.send (ConfigurationBroadcast.java:79)
at io.spine.server.integration.IntegrationBroker.notifyOthers (IntegrationBroker.java:265)
at io.spine.server.integration.ConfigurationChangeObserver.handle (ConfigurationChangeObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:46)
at io.spine.server.transport.Subscriber.callObservers (Subscriber.java:103)
at io.spine.server.transport.Subscriber.onMessage (Subscriber.java:98)
at io.spine.server.transport.memory.InMemoryPublisher.publish (InMemoryPublisher.java:61)
at io.spine.server.integration.ConfigurationBroadcast.send (ConfigurationBroadcast.java:79)
at io.spine.server.integration.IntegrationBroker.notifyOthers (IntegrationBroker.java:265)
at io.spine.server.integration.ConfigurationChangeObserver.handle (ConfigurationChangeObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:46)
at io.spine.server.transport.Subscriber.callObservers (Subscriber.java:103)
at io.spine.server.transport.Subscriber.onMessage (Subscriber.java:98)
at io.spine.server.transport.memory.InMemoryPublisher.publish (InMemoryPublisher.java:61)
at io.spine.server.integration.ConfigurationBroadcast.send (ConfigurationBroadcast.java:79)
at io.spine.server.integration.IntegrationBroker.notifyOthers (IntegrationBroker.java:265)
at io.spine.server.integration.ConfigurationChangeObserver.handle (ConfigurationChangeObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:98)
at io.spine.server.integration.AbstractChannelObserver.onNext (AbstractChannelObserver.java:46)
at io.spine.server.transport.Subscriber.callObservers (Subscriber.java:103)
at io.spine.server.transport.Subscriber.onMessage (Subscriber.java:98)
at io.spine.server.transport.memory.InMemoryPublisher.publish (InMemoryPublisher.java:61)
at io.spine.server.integration.ConfigurationBroadcast.send (ConfigurationBroadcast.java:79)
at io.spine.server.integration.ConfigurationBroadcast.onTypesChanged (ConfigurationBroadcast.java:66)
at io.spine.server.integration.IntegrationBroker.notifyTypesChanged (IntegrationBroker.java:254)
at io.spine.server.integration.IntegrationBroker.close (IntegrationBroker.java:274)
at io.spine.server.BoundedContext.close (BoundedContext.java:424)
at io.spine.server.DomainContext.close (DomainContext.java:85)
at io.spine.server.integration.ThirdPartyContext.close (ThirdPartyContext.java:186)

It looks like we're missing some synchronization.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants