diff options
| author | Robert Greig <rgreig@apache.org> | 2007-09-18 12:15:57 +0000 |
|---|---|---|
| committer | Robert Greig <rgreig@apache.org> | 2007-09-18 12:15:57 +0000 |
| commit | 57a13486b566cddb3e56e7a9ba79bdeebd7726f5 (patch) | |
| tree | 77ff66323ea851c009cd58b96f90b9221a794685 /java | |
| parent | c584a4b0271541e80d1cb0b6f1bb64454580dafe (diff) | |
| download | qpid-python-57a13486b566cddb3e56e7a9ba79bdeebd7726f5.tar.gz | |
QPID-531: merge of fix for NO_ACK causing a memory leak
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2@576861 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
| -rw-r--r-- | java/broker/src/main/java/org/apache/qpid/server/queue/SubscriptionImpl.java | 4 | ||||
| -rw-r--r-- | java/systests/src/main/java/org/apache/qpid/server/queue/AckTest.java | 18 |
2 files changed, 22 insertions, 0 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/queue/SubscriptionImpl.java b/java/broker/src/main/java/org/apache/qpid/server/queue/SubscriptionImpl.java index a7be9f2ad2..1299c3a80c 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/queue/SubscriptionImpl.java +++ b/java/broker/src/main/java/org/apache/qpid/server/queue/SubscriptionImpl.java @@ -308,6 +308,10 @@ public class SubscriptionImpl implements Subscription protocolSession.getProtocolOutputConverter().writeDeliver(msg, channel.getChannelId(), deliveryTag, consumerTag); + if (!_acks) + { + msg.decrementReference(storeContext); + } } } finally diff --git a/java/systests/src/main/java/org/apache/qpid/server/queue/AckTest.java b/java/systests/src/main/java/org/apache/qpid/server/queue/AckTest.java index ae2209c629..29952a6d9b 100644 --- a/java/systests/src/main/java/org/apache/qpid/server/queue/AckTest.java +++ b/java/systests/src/main/java/org/apache/qpid/server/queue/AckTest.java @@ -187,9 +187,27 @@ public class AckTest extends TestCase 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 * set case) */ |
