diff --git a/activemq-core/src/main/java/org/apache/activemq/broker/region/TopicSubscription.java b/activemq-core/src/main/java/org/apache/activemq/broker/region/TopicSubscription.java index ca26cae355..b57951d826 100755 --- a/activemq-core/src/main/java/org/apache/activemq/broker/region/TopicSubscription.java +++ b/activemq-core/src/main/java/org/apache/activemq/broker/region/TopicSubscription.java @@ -175,7 +175,7 @@ public class TopicSubscription extends AbstractSubscription { // eviction strategy // for a bad strategy lets just not evict if (messagesToEvict == 0) { - LOG.warn("No messages to evict returned from eviction strategy: " + messageEvictionStrategy); + LOG.warn("No messages to evict returned for " + destination + " from eviction strategy: " + messageEvictionStrategy + " out of " + list.size() + " candidates"); break; } } diff --git a/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/UniquePropertyMessageEvictionStrategy.java b/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/UniquePropertyMessageEvictionStrategy.java index 6f1288088c..1523b52814 100644 --- a/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/UniquePropertyMessageEvictionStrategy.java +++ b/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/UniquePropertyMessageEvictionStrategy.java @@ -17,6 +17,8 @@ package org.apache.activemq.broker.region.policy; import org.apache.activemq.broker.region.MessageReference; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.ArrayList; @@ -35,6 +37,8 @@ import java.util.LinkedList; */ public class UniquePropertyMessageEvictionStrategy extends MessageEvictionStrategySupport { + private static final Logger LOG = LoggerFactory.getLogger(UniquePropertyMessageEvictionStrategy.class); + protected String propertyName; public String getPropertyName() { @@ -47,6 +51,7 @@ public class UniquePropertyMessageEvictionStrategy extends MessageEvictionStrate @Override public MessageReference[] evictMessages(LinkedList messages) throws IOException { + MessageReference oldest = (MessageReference)messages.getFirst(); HashMap pivots = new HashMap(); Iterator iter = messages.iterator(); @@ -69,12 +74,12 @@ public class UniquePropertyMessageEvictionStrategy extends MessageEvictionStrate for (MessageReference ref : pivots.values()) { messages.remove(ref); } + if (messages.size() != 0) { return (MessageReference[])messages.toArray(new MessageReference[messages.size()]); } } - - return new MessageReference[] {(MessageReference) messages.removeFirst()}; + return new MessageReference[] {oldest}; } }