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();

Reply via email to