You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2011/06/29 12:11:25 UTC
svn commit: r1141033 - in
/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region:
TopicSubscription.java policy/UniquePropertyMessageEvictionStrategy.java
Author: dejanb
Date: Wed Jun 29 10:11:25 2011
New Revision: 1141033
URL: http://svn.apache.org/viewvc?rev=1141033&view=rev
Log:
https://issues.apache.org/jira/browse/AMQ-3379 - unique property eviction strategy - remove oldest if there's no duplicates
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/TopicSubscription.java
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/UniquePropertyMessageEvictionStrategy.java
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/TopicSubscription.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/TopicSubscription.java?rev=1141033&r1=1141032&r2=1141033&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/TopicSubscription.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/TopicSubscription.java Wed Jun 29 10:11:25 2011
@@ -175,7 +175,7 @@ public class TopicSubscription extends A
// 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;
}
}
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/UniquePropertyMessageEvictionStrategy.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/UniquePropertyMessageEvictionStrategy.java?rev=1141033&r1=1141032&r2=1141033&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/UniquePropertyMessageEvictionStrategy.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/UniquePropertyMessageEvictionStrategy.java Wed Jun 29 10:11:25 2011
@@ -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 UniquePropertyMessageEvicti
@Override
public MessageReference[] evictMessages(LinkedList messages) throws IOException {
+ MessageReference oldest = (MessageReference)messages.getFirst();
HashMap<Object, MessageReference> pivots = new HashMap<Object, MessageReference>();
Iterator iter = messages.iterator();
@@ -69,12 +74,12 @@ public class UniquePropertyMessageEvicti
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};
}
}