This is an automated email from the ASF dual-hosted git repository. clebertsuconic pushed a commit to branch 2.19.x in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
commit a3d4ca804efa17d426bdf358e87c9ec1acef067f Author: Justin Bertram <[email protected]> AuthorDate: Tue Jan 11 15:17:52 2022 -0600 ARTEMIS-3636 LinkedListImpl leak on mesage consume error (cherry picked from commit 54f4cb560c5781cd5921aa6a2d55ef038e9056aa) --- .../artemis/core/client/impl/ClientConsumerImpl.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientConsumerImpl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientConsumerImpl.java index 5000159..457eaf2 100644 --- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientConsumerImpl.java +++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientConsumerImpl.java @@ -19,7 +19,6 @@ package org.apache.activemq.artemis.core.client.impl; import java.io.File; import java.security.AccessController; import java.security.PrivilegedAction; -import java.util.Iterator; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; @@ -42,6 +41,7 @@ import org.apache.activemq.artemis.spi.core.remoting.SessionContext; import org.apache.activemq.artemis.utils.FutureLatch; import org.apache.activemq.artemis.utils.ReusableLatch; import org.apache.activemq.artemis.utils.TokenBucketLimiter; +import org.apache.activemq.artemis.utils.collections.LinkedListIterator; import org.apache.activemq.artemis.utils.collections.PriorityLinkedList; import org.apache.activemq.artemis.utils.collections.PriorityLinkedListImpl; import org.jboss.logging.Logger; @@ -131,8 +131,6 @@ public final class ClientConsumerImpl implements ClientConsumerInternal { private final ClassLoader contextClassLoader; - - public ClientConsumerImpl(final ClientSessionInternal session, final ConsumerContext consumerContext, final SimpleString queueName, @@ -711,10 +709,8 @@ public final class ClientConsumerImpl implements ClientConsumerInternal { synchronized (this) { // Need to send credits for the messages in the buffer - Iterator<ClientMessageInternal> iter = buffer.iterator(); - - while (iter.hasNext()) { - try { + try (LinkedListIterator<ClientMessageInternal> iter = buffer.iterator()) { + while (iter.hasNext()) { ClientMessageInternal message = iter.next(); if (message.isLargeMessage()) { @@ -723,9 +719,9 @@ public final class ClientConsumerImpl implements ClientConsumerInternal { } flowControlBeforeConsumption(message); - } catch (Exception e) { - ActiveMQClientLogger.LOGGER.errorClearingMessages(e); } + } catch (Exception e) { + ActiveMQClientLogger.LOGGER.errorClearingMessages(e); } clearBuffer();
