From f2dd65475a2d6244a5fb8ebfb618bb608710ace7 Mon Sep 17 00:00:00 2001 From: Robert Godfrey Date: Sat, 6 Sep 2014 16:44:24 +0000 Subject: QPID-6077 : [Java AMQP 1.0] memory leak in receiver where sender settles first git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1622886 13f79535-47bb-0310-9956-ffa450edef68 --- .../amqp_1_0/transport/ReceivingLinkEndpoint.java | 23 +++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ReceivingLinkEndpoint.java b/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ReceivingLinkEndpoint.java index 0407453160..a23aa77316 100644 --- a/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ReceivingLinkEndpoint.java +++ b/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ReceivingLinkEndpoint.java @@ -21,12 +21,23 @@ package org.apache.qpid.amqp_1_0.transport; -import org.apache.qpid.amqp_1_0.type.*; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.SortedMap; +import java.util.TreeMap; + +import org.apache.qpid.amqp_1_0.type.Binary; +import org.apache.qpid.amqp_1_0.type.DeliveryState; +import org.apache.qpid.amqp_1_0.type.Outcome; +import org.apache.qpid.amqp_1_0.type.UnsignedInteger; import org.apache.qpid.amqp_1_0.type.transaction.TransactionalState; -import org.apache.qpid.amqp_1_0.type.transport.*; - - -import java.util.*; +import org.apache.qpid.amqp_1_0.type.transport.Attach; +import org.apache.qpid.amqp_1_0.type.transport.Flow; +import org.apache.qpid.amqp_1_0.type.transport.Role; +import org.apache.qpid.amqp_1_0.type.transport.Transfer; public class ReceivingLinkEndpoint extends LinkEndpoint { @@ -428,6 +439,8 @@ public class ReceivingLinkEndpoint extends LinkEndpoint public void settle(Binary deliveryTag) { super.settle(deliveryTag); + _unsettledIds.remove(deliveryTag); + _unsettledMap.remove(deliveryTag); if(_creditWindow) { sendFlowConditional(); -- cgit v1.2.1