diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2013-12-09 20:30:17 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2013-12-09 20:30:17 +0000 |
| commit | 2b341e3042af650879f5fa1037d10c904dcf01fa (patch) | |
| tree | e8b2f047972334803b8554297813229d066762eb /java | |
| parent | d01a84767e3349a9da5d3c0fe80bc534e9694100 (diff) | |
| download | qpid-python-2b341e3042af650879f5fa1037d10c904dcf01fa.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/qpid@1549668 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
| -rw-r--r-- | java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java index 75243d1c43..3fa1032111 100644 --- a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java +++ b/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); } |
