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)