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 2007/09/18 14:15:57 UTC

svn commit: r576861 - in /incubator/qpid/branches/M2/java: broker/src/main/java/org/apache/qpid/server/queue/SubscriptionImpl.java systests/src/main/java/org/apache/qpid/server/queue/AckTest.java

Author: rgreig
Date: Tue Sep 18 05:15:57 2007
New Revision: 576861

URL: http://svn.apache.org/viewvc?rev=576861&view=rev
Log:
QPID-531: merge of fix for NO_ACK causing a memory leak

Modified:
    incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/SubscriptionImpl.java
    incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/server/queue/AckTest.java

Modified: incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/SubscriptionImpl.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/SubscriptionImpl.java?rev=576861&r1=576860&r2=576861&view=diff
==============================================================================
--- incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/SubscriptionImpl.java (original)
+++ incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/SubscriptionImpl.java Tue Sep 18 05:15:57 2007
@@ -308,6 +308,10 @@
 
                 protocolSession.getProtocolOutputConverter().writeDeliver(msg, channel.getChannelId(), deliveryTag, consumerTag);
 
+                if (!_acks)
+                {
+                    msg.decrementReference(storeContext);
+                }
             }
         }
         finally

Modified: incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/server/queue/AckTest.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/server/queue/AckTest.java?rev=576861&r1=576860&r2=576861&view=diff
==============================================================================
--- incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/server/queue/AckTest.java (original)
+++ incubator/qpid/branches/M2/java/systests/src/main/java/org/apache/qpid/server/queue/AckTest.java Tue Sep 18 05:15:57 2007
@@ -187,7 +187,25 @@
         UnacknowledgedMessageMap map = _channel.getUnacknowledgedMessageMap();
         assertTrue(map.size() == 0);
         assertTrue(_messageStore.getMessageMetaDataMap().size() == 0);
+        assertTrue(_messageStore.getContentBodyMap().size() == 0);
     }
+
+    /**
+     * Tests that in no-ack mode no messages are retained
+     */
+    public void testPersistentNoAckMode() throws AMQException
+    {
+        // false arg means no acks expected
+        _subscription = new SubscriptionImpl(5, _protocolSession, DEFAULT_CONSUMER_TAG, false);
+        final int msgCount = 10;
+        publishMessages(msgCount, true);
+
+        UnacknowledgedMessageMap map = _channel.getUnacknowledgedMessageMap();
+        assertTrue(map.size() == 0);
+        assertTrue(_messageStore.getMessageMetaDataMap().size() == 0);
+        assertTrue(_messageStore.getContentBodyMap().size() == 0);
+    }
+
 
     /**
      * Tests that a single acknowledgement is handled correctly (i.e multiple flag not