summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2013-12-09 20:30:17 +0000
committerRobert Godfrey <rgodfrey@apache.org>2013-12-09 20:30:17 +0000
commit378ff3b1415c8d22890b25c7dbc2e6ec0544ca53 (patch)
tree5763260953cf59dde607a73da3a9747d112b62b0 /qpid/java
parentc83e3cd55fca622880bb0291e58364c0f76d45f7 (diff)
downloadqpid-python-378ff3b1415c8d22890b25c7dbc2e6ec0544ca53.tar.gz
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
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java13
1 files 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<MessageConsumerImpl> consumers = null;
+ List<MessageProducerImpl> producers = null;
+ synchronized (_session.getEndpoint().getLock())
+ {
+ consumers = new ArrayList<MessageConsumerImpl>(_consumers);
+ producers = new ArrayList<MessageProducerImpl>(_producers);
+ }
+ for(MessageConsumerImpl consumer : consumers)
{
consumer.close();
}
- for(MessageProducerImpl producer : _producers)
+ for(MessageProducerImpl producer : producers)
{
producer.close();
}
+
_session.close();
_connection.removeSession(this);
}