You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ra...@apache.org on 2009/02/10 09:07:18 UTC

svn commit: r742876 - /activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQMessageConsumer.java

Author: rajdavies
Date: Tue Feb 10 08:07:16 2009
New Revision: 742876

URL: http://svn.apache.org/viewvc?rev=742876&view=rev
Log:
Fix for https://issues.apache.org/activemq/browse/AMQ-2100

Modified:
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQMessageConsumer.java

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQMessageConsumer.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQMessageConsumer.java?rev=742876&r1=742875&r2=742876&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQMessageConsumer.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQMessageConsumer.java Tue Feb 10 08:07:16 2009
@@ -16,6 +16,7 @@
  */
 package org.apache.activemq;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -685,9 +686,14 @@
             if (session.isClientAcknowledge()) {
                 if (!this.info.isBrowser()) {
                     // rollback duplicates that aren't acknowledged
-                    for (MessageDispatch old : deliveredMessages) {
-                        session.connection.rollbackDuplicate(this, old.getMessage());
+                    List<MessageDispatch> tmp = null;
+                    synchronized (this.deliveredMessages) {
+                        tmp = new ArrayList<MessageDispatch>(this.deliveredMessages);
                     }
+                    for (MessageDispatch old : tmp) {
+                        this.session.connection.rollbackDuplicate(this, old.getMessage());
+                    }
+                    tmp.clear();
                 }
             }
             if (!session.isTransacted()) {