From 378ff3b1415c8d22890b25c7dbc2e6ec0544ca53 Mon Sep 17 00:00:00 2001 From: Robert Godfrey Date: Mon, 9 Dec 2013 20:30:17 +0000 Subject: QPID-5390 : [JMS AMQP 1.0] ConcurrentModificationException when closing a connection (patch from Xin Chen) git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1549668 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java index 75243d1c43..3fa1032111 100644 --- a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java +++ b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java @@ -276,14 +276,23 @@ public class SessionImpl implements Session, QueueSession, TopicSession { _closed = true; _dispatcher.close(); - for(MessageConsumerImpl consumer : _consumers) + + List consumers = null; + List producers = null; + synchronized (_session.getEndpoint().getLock()) + { + consumers = new ArrayList(_consumers); + producers = new ArrayList(_producers); + } + for(MessageConsumerImpl consumer : consumers) { consumer.close(); } - for(MessageProducerImpl producer : _producers) + for(MessageProducerImpl producer : producers) { producer.close(); } + _session.close(); _connection.removeSession(this); } -- cgit v1.2.1