[ 
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)

Reply via email to