[ https://issues.apache.org/jira/browse/ARTEMIS-3509?focusedWorklogId=726025&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-726025 ]
ASF GitHub Bot logged work on ARTEMIS-3509: ------------------------------------------- Author: ASF GitHub Bot Created on: 14/Feb/22 02:36 Start Date: 14/Feb/22 02:36 Worklog Time Spent: 10m Work Description: jbertram commented on pull request #3952: URL: https://github.com/apache/activemq-artemis/pull/3952#issuecomment-1037388502 Using `CopyOnWriteArrayList` is better than using `synchronized` relatively speaking, but I'm still not in favor of a change that is going to have such a widespread impact for an issue that seems confined to the STOMP implementation. As noted previously, I recommend you track down the root cause of the concurrent access and add protection there. As far as testing goes. I will typically write a system/integration test that brute forces the issue to occur. For example, if there's a race condition in connection handling then I'll spin up a few hundred threads and create as many connections as possible as quickly as possible. Once I can brute force the issue semi-reliably then I'll gather logging to narrow down the issue until the root cause is clear at which point a proper fix can be applied. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: gitbox-unsubscr...@activemq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org Issue Time Tracking ------------------- Worklog Id: (was: 726025) Time Spent: 1.5h (was: 1h 20m) > STOMP Websocket client disconnected after ConcurrentModificationException in > Broker > ----------------------------------------------------------------------------------- > > Key: ARTEMIS-3509 > URL: https://issues.apache.org/jira/browse/ARTEMIS-3509 > Project: ActiveMQ Artemis > Issue Type: Bug > Components: Broker > Affects Versions: 2.16.0 > Reporter: Elodie Vandromme > Priority: Major > Time Spent: 1.5h > Remaining Estimate: 0h > > Web clients connected through WebSocket are randomly disconnected from > artemis broker without notification of the disconnection. > A ConcurrentModificationException is raised; > {noformat} > [2021-09-28 10:26:53,591] - [WILDFLY] - [WARN ] - [Thread-11 > ([ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$6@444dc7ba|mailto:ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$6@444dc7ba])] > - [org.apache.activemq.artemis.core.server] : *AMQ222151: removing consumer > which did not handle a message*, consumer=ServerConsumerImpl [id=1990, > filter=null, binding=LocalQueueBinding [address=jms.topic.defended_assetFull, > queue=QueueImpl[name=d1586796-2035-11ec-8d2e-00505689a76b, > postOffice=PostOfficeImpl > [server=ActiveMQServerImpl::serverUUID=2f00c36f-2034-11ec-8d2e-00505689a76b], > temp=true]@4180826b, filter=null, name=d1586796-2035-11ec-8d2e-00505689a76b, > clusterName=d1586796-2035-11ec-8d2e-00505689a76b2f00c36f-2034-11ec-8d2e-00505689a76b]], > > message=Reference[2019]:RELIABLE:CoreMessage[messageID=2019,durable=true,userID=d5e2d1c3-2035-11ec-8d2e-00505689a76b,priority=4, > timestamp=Tue Sep 28 10:26:53 CEST 2021,expiration=0, durable=true, > address=jms.topic.defended_assetFull,size=6520,properties=TypedProperties[__AMQ_CID=f9eab79a-2034-11ec-8d2e-00505689a76b,_AMQ_ROUTING_TYPE=0]]@155890432: > java.util.ConcurrentModificationException > at > java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909) > at java.util.ArrayList$Itr.next(ArrayList.java:859) > at > org.apache.activemq.artemis.core.server.impl.RefsOperation.afterCommit(RefsOperation.java:179) > at > org.apache.activemq.artemis.core.transaction.impl.TransactionImpl.afterCommit(TransactionImpl.java:579) > at > org.apache.activemq.artemis.core.transaction.impl.TransactionImpl.access$100(TransactionImpl.java:40) > at > org.apache.activemq.artemis.core.transaction.impl.TransactionImpl$2.done(TransactionImpl.java:322) > at > org.apache.activemq.artemis.core.persistence.impl.journal.OperationContextImpl.executeOnCompletion(OperationContextImpl.java:190) > at > org.apache.activemq.artemis.core.persistence.impl.journal.OperationContextImpl.executeOnCompletion(OperationContextImpl.java:128) > at > org.apache.activemq.artemis.core.persistence.impl.journal.AbstractJournalStorageManager.afterCompleteOperations(AbstractJournalStorageManager.java:321) > at > org.apache.activemq.artemis.core.transaction.impl.TransactionImpl.commit(TransactionImpl.java:313) > at > org.apache.activemq.artemis.core.transaction.impl.TransactionImpl.commit(TransactionImpl.java:264) > at > org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.commit(ServerSessionImpl.java:1284) > at > org.apache.activemq.artemis.core.protocol.stomp.StompSession$1.run(StompSession.java:164) > at > org.apache.activemq.artemis.core.protocol.stomp.StompSession.afterDelivery(StompSession.java:116) > at > org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.proceedDeliver(ServerConsumerImpl.java:511) > at > org.apache.activemq.artemis.core.server.impl.QueueImpl.proceedDeliver(QueueImpl.java:3744) > at > org.apache.activemq.artemis.core.server.impl.QueueImpl.deliver(QueueImpl.java:3048) > at > org.apache.activemq.artemis.core.server.impl.QueueImpl.access$2400(QueueImpl.java:125) > at > org.apache.activemq.artemis.core.server.impl.QueueImpl$DeliverRunner.run(QueueImpl.java:4119) > at > org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42) > at > org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31) > at > org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at > org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) > {noformat} > Artemis (2.16.0) is deployed in Wildfly (24.0.1.Final) > Clients are connected to stomp acceptor: > {code:xml} > <acceptor name="stomp-over-ws" > factory-class="org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptorFactory"> > <param name="host" value="0.0.0.0" /> > <param name="protocols" value="STOMP" /> > <param name="port" value="61614" /> > </acceptor> > {code} > Bug is random but is reproduced quite often with a full scenario we have (on > one topic or another) so we are able to reproduce it and add logs if > necessary. -- This message was sent by Atlassian Jira (v8.20.1#820001)