yangwei created ARTEMIS-2368:
--------------------------------

             Summary: Fix races on closing consumer
                 Key: ARTEMIS-2368
                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2368
             Project: ActiveMQ Artemis
          Issue Type: Bug
          Components: Broker
    Affects Versions: 2.9.0
            Reporter: yangwei


There are some race conditions between closing consumer and session failover:
 # When sending SessionConsumerCloseMessage timeout, conn::fail() is called 
resulting in current consumer is recreated on server side again but removed on 
client side.
 # Between  SessionConsumerCloseMessage sending and session::removeConsume(), 
session failover happens resulting in consumer inconsistency.
 # When an iteration over the consumers entrySet is made to recreate consumer 
during session failover process, consumer::close() is called, maybe leading to 
consumer inconsistency or ConcurrentModificationException thrown.

We traverse through the cloned consumers entrySet, add synchronized block and 
check if consumer is closed while recreating consumer to fix the issue.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to