You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2013/12/09 21:30:18 UTC

svn commit: r1549668 - /qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java

Author: rgodfrey
Date: Mon Dec  9 20:30:17 2013
New Revision: 1549668

URL: http://svn.apache.org/r1549668
Log:
QPID-5390 : [JMS AMQP 1.0] ConcurrentModificationException when closing a connection (patch from Xin Chen)

Modified:
    qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java

Modified: qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java?rev=1549668&r1=1549667&r2=1549668&view=diff
==============================================================================
--- qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java (original)
+++ qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java Mon Dec  9 20:30:17 2013
@@ -276,14 +276,23 @@ public class SessionImpl implements Sess
         {
             _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);
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org