From 6dd9ba49492189ad37065da35786ebfff1f02301 Mon Sep 17 00:00:00 2001 From: Clebert Suconic Date: Thu, 9 Mar 2017 22:34:56 -0500 Subject: [PATCH] ARTEMIS-1029 Cleaning up small possible Exception treating an exception after the PagingIterator in case of duplicates cleanups --- .../management/impl/QueueControlImpl.java | 41 +++++++++++++------ .../core/server/impl/ScaleDownHandler.java | 6 ++- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java index 5ecea64e5a0..c5f21114220 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java @@ -29,6 +29,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.NoSuchElementException; import org.apache.activemq.artemis.api.core.ActiveMQException; import org.apache.activemq.artemis.api.core.JsonUtil; @@ -434,12 +435,16 @@ public Map[] listMessages(final String filterStr) throws Excepti List> messages = new ArrayList<>(); queue.flushExecutor(); try (LinkedListIterator iterator = queue.browserIterator()) { - while (iterator.hasNext()) { - MessageReference ref = iterator.next(); - if (filter == null || filter.match(ref.getMessage())) { - Message message = ref.getMessage(); - messages.add(message.toMap()); + try { + while (iterator.hasNext()) { + MessageReference ref = iterator.next(); + if (filter == null || filter.match(ref.getMessage())) { + Message message = ref.getMessage(); + messages.add(message.toMap()); + } } + } catch (NoSuchElementException ignored) { + // this could happen through paging browsing } return messages.toArray(new Map[messages.size()]); } @@ -524,11 +529,16 @@ public long countMessages(final String filterStr) throws Exception { } else { try (LinkedListIterator iterator = queue.browserIterator()) { int count = 0; - while (iterator.hasNext()) { - MessageReference ref = iterator.next(); - if (filter.match(ref.getMessage())) { - count++; + + try { + while (iterator.hasNext()) { + MessageReference ref = iterator.next(); + if (filter.match(ref.getMessage())) { + count++; + } } + } catch (NoSuchElementException ignored) { + // this could happen through paging browsing } return count; } @@ -928,13 +938,18 @@ public CompositeData[] browse(String filter) throws Exception { Filter thefilter = FilterImpl.createFilter(filter); queue.flushExecutor(); try (LinkedListIterator iterator = queue.browserIterator()) { - while (iterator.hasNext() && currentPageSize++ < pageSize) { - MessageReference ref = iterator.next(); - if (thefilter == null || thefilter.match(ref.getMessage())) { - c.add(OpenTypeSupport.convert(ref)); + try { + while (iterator.hasNext() && currentPageSize++ < pageSize) { + MessageReference ref = iterator.next(); + if (thefilter == null || thefilter.match(ref.getMessage())) { + c.add(OpenTypeSupport.convert(ref)); + } } + } catch (NoSuchElementException ignored) { + // this could happen through paging browsing } + CompositeData[] rc = new CompositeData[c.size()]; c.toArray(rc); return rc; diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ScaleDownHandler.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ScaleDownHandler.java index 4590c0bd861..bf0ed0bc406 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ScaleDownHandler.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ScaleDownHandler.java @@ -25,6 +25,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.NoSuchElementException; import java.util.Set; import java.util.TreeSet; @@ -210,8 +211,9 @@ public long scaleDownRegularMessages(final SimpleString address, for (QueuesXRefInnerManager queueFound : queuesFound) { ackMessageOnQueue(tx, queueFound.getQueue(), messageReference); } - } + } catch (NoSuchElementException ignored) { + // this could happen through paging browsing } } @@ -294,6 +296,8 @@ private long scaleDownSNF(final SimpleString address, ackMessageOnQueue(tx, queue, messageRef); } + } catch (NoSuchElementException ignored) { + // this could happen through paging browsing } }